1 / 39

Indeksowanie

Indeksowanie. Seminarium: Wyszukiwarki internetowe Marta Cylkowska. Indeksowanie. Cel: usprawnienie wyszukiwania Chcemy odpowiadać na pytania: czy dany term jest w dokumencie? jeśli jest, to gdzie? Zakładamy, że użytkownik chce wyszukać informację, a nie wyszukać wzorzec w tekście.

helki
Download Presentation

Indeksowanie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Indeksowanie Seminarium: Wyszukiwarki internetowe Marta Cylkowska

  2. Indeksowanie • Cel: usprawnienie wyszukiwania • Chcemy odpowiadać na pytania: • czy dany term jest w dokumencie? • jeśli jest, to gdzie? • Zakładamy, że użytkownik chce wyszukać informację, a nie wyszukać wzorzec w tekście

  3. Przygotowanie słownika • Konwersja do jednolitego formatu • Spacje, interpunkcja itp. • Usunięcie zbyt częstych słów • Słowa w podstawowej formie (stemming) • Term jako złączenie kilku słów • Thesaurus, Soundex

  4. tekst Dokument struktura metadane Konwersja formatu • Dokumenty w postaci plików o różnych formatach • Dokument zawiera nie tylko treść, ale też strukturę i metadane

  5. Litery i inne znaki • Białe znaki • Wielkie i małe litery • Bush, SOS, IDEA (International Data Encryption Standard) • Myślniki • co-education razem • Hewlett-Packardrazem lub osobno • state-of-the-art. osobno • San Francisco-Los Angeles osobno

  6. Litery i inne znaki • Znaki interpunkcyjne: • a.out -> „a out” czy „aout” ? Ale aoűt to sierpień po francusku! • U.S.A. -> „U S A” ? • Poland’s -> Poland’s, Poland s, Poland, Polands? • Inne znaki z reguły pomijane • wyjątki: C++, J#, i++ (++i inaczej), $10 • Znaki diakrytyczne

  7. Cyfry • Zwykle same w sobie niosą mało informacji, mogą być pomijane • Niektóre termy z cyframi więcej znaczą: • 340B.C. • 2003-10-03 • 166.249.71.3 • My PGP key is 324a3df234cb23e

  8. Stop-lista • Stop-lista zawiera bardzo częste słowa a, the, it, to, on, of, and, be, ..., can(?) • Przy wyszukiwaniu te słowa prawie nie eliminują dokumentów, więc nie indeksujmy ich • Wtedy nie można wyszukać „to be or not to be”, „the who”, ... • Indeksujmy, ale z zapytania usuńmy. Chyba że zapytanie zawiera tylko słowa ze stop-listy

  9. Stemming • Chcemy wyznaczyć rdzeń słowa programming, programmable, programmers, programmed  program • Mniej różnych termów - oszczędność miejsca • Być może użytkownikowi nie zależy na dokładnej formie, a być może zależy... university vs. universal

  10. Stemming • Jak wyszukać rdzeń słowa? • zbudować słownik jak do gry Scrabble • automatycznie (algorytm Portera): • Porównanie najdłuższego suffiksu słowa ze wzorcem: • sses -> ss • s -> ε • ator -> ate • Algorytm ma 5 faz i wiele takich reguł... Szczegóły algorytmu Portera: http://tartarus.org/~martin/PorterStemmer/def.txt

  11. Rozbicie słów • Słowa mogą być złożone, nawet bardzo: • w języku niemieckim jest wiele takich słów • w polskim: polioksyetylenoalkiloamoniohydroksypropylomaleinian • można rozbić na: poli, oksy, etyleno, alkilo, amonio, hydroksy, propylo, maleinian

  12. Łączenie grup słów • Można kilka słów traktować jako term • Rzeczowniki niosą najwięcej treści, dlatego grupy rzeczowników będą termami computer science • Szukamy rzeczowników, które często są blisko w tekście • Traktujemy je razem jako jeden term

  13. Thesaurus, Soundex • Grupowanie termów podobnych, aby je ujednolicić • Thesaurus: podobne w znaczeniu • Soundex: podobne w brzmieniu chebyshev  tchebycheff • Soundex można zrobić automatycznie Szczegóły algorytmu Soundex: http://www.creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm

  14. Modyfikacja zapytania • Zapytanie może być modyfikowane dokładnie tak jak dokumenty • wtedy mniej dokładne wyniki wyszukiwania • Może nie być modyfikowane (lub częściowo) • jest możliwe dokładnie wyszukanie • zależy to od struktury indeksu

  15. Indeksowanie • Już wiemy, co chcemy umieć wyszukiwać • Nie wiemy jeszcze jak • Indeks to struktura, która ma umożliwiać szybkie znajdowanie dokumentów zgodnych z zapytaniem

  16. Struktura indeksu • Żadna - przeglądanie wszystkich dokumentów • Pliki odwrócone (inverted files) • Drzewa suffiksowe, tablice suffiksowe • Signature files • Baza danych - dla dynamicznych zbiorów

  17. Pliki odwrócone • Mamy dane w postaci: [dokument (pozycja), term] • Chcemy mieć je w postaci: [term, częstość, lista dokumentów (pozycji)]

  18. A 2 4 5 12 B 2 14 C 12 14 28 Pliki odwrócone • Słownik - wszystkie termy • Lista wystąpień - dla każdego termu • Słownik i listy są posortowane słownik listy wystąpień • Rozmiar słownika ok. n - łączny rozmiar wszystkich dokumentów

  19. Lista wystąpień • Zawiera nr dokumentu, w którym występuje term • Może zawierać też dokładne miejsce występowania w tym dokumencie Dla termu wielokrotnie występującego w tekście musimy pamiętać wszystkie jego wystąpienia

  20. Wyszukiwanie • Odnalezienie wszystkich termów z zapytania w słowniku • Odzyskanie list wystąpień dla każdego termu • Manipulacja listami wystąpień • Przeglądanie dokumentów dla zapytań z frazami, gdy adresem jest dokument Dopiero w ostatniej fazie zaglądamy do tekstu!

  21. Wyszukiwanie • Zapytanie proste tylko wyszukanie w liście wystąpień • Zapytanie złożone AND wyznaczenie części wspólnej • Zapytanie złożone OR scalenie posortowanych list wystąpień • Czas liniowy względem długości list wystąpień

  22. A 2 4 5 12 B 2 14 14 22 3 4 5 C 14 22 23 24 Wyszukiwanie • A AND B AND C - czy kolejność jest istotna? • Tak, lepiej zacząć od najrzadziej występującego termu • Mamy częstości wystąpień w słowniku! • Najlepsza kolejność to (A AND B) AND C

  23. 128 31 17 2 4 8 16 32 64 1 2 3 5 8 21 Skip pointers 128 16 • W pierwszej liście po 16 jest 32 • W drugiej można przeskoczyć dodatkowym wskaźnikiem • 17, 21 nie muszą być przeglądane 31 8

  24. Skip pointers • Ile powinno być dodatkowych wskaźników? • Dużo • często będziemy po nich skakać • dużo porównań na wskaźnikach • Mało • mniejsza szansa na skoki • mniej porównań • Optimum: , gdzie L to długość listy wystąpień • odpowiednie dla niezmieniającej się listy

  25. Budowanie indeksu • Cały indeks nie mieści się w pamięci RAM • Algorytm budowania indeksu: • Zbuduj indeksy dla mniejszej liczby dokumentów, tak by się mieściły w RAM • Scalaj te indeksy

  26. Budowanie indeksu • Dla każdego dokumentu, dla każdego termu • szukaj termu w słowniku • jeśli nie znaleziono, to dodaj do słownika i dokument do listy wystąpień • jeśli znaleziono, to jeśli trzeba dodaj do listy wystąpień adres dokumentu na właściwą pozycję

  27. Budujemy indeksów o wielkości M • Scalamy je w fazach Scalanie indeksów Faza III Faza II Faza I

  28. Dynamiczne zbiory • Update jest kosztowny • Wykonywany raz na jakiś czas • Dokumenty dodawane, usuwane pamiętane osobno

  29. Dynamiczne zbiory

  30. kot 12 29 Plik odwrócony ala 1 22 ma 9 26 nie nie 5 5 Tablice suffiksowe • Listy uporządkowane w kolejności leksyko-graficznej tekstu znajdującego się po termie • Łatwiejsze wyszukiwanie fraz 1 5 9 12 22 26 29 Ala nie ma kota, czy Ala ma kota? Tablica suffiksowa ala 22 1 kot 29 12 ma 26 9

  31. Wyszukiwanie fraz • Znajdź pierwszy term w słowniku • Przejdź do jego listy wystąpień • Zaglądając do tekstu wyszukaj binarnie frazę

  32. Signature files • Dane w postaci: [dokument, „podpis dokumentu”] • Podpis to ciąg m-bitowy • Każdy term ma też swój podpis • Podpis dokumentu to OR wszystkich termów, które zawiera Niech t1, t2, ..., tr - różne termy dokumentud, wtedy

  33. Podpis dla termów • Podpis to ciąg m-bitowy • Mamy k funkcji haszujących: hk: termy{1..m} • Ustawiamy i-ty bit podpisu termu t na 1 tylko wtedy gdy któraś funkcja h(t) = i • Przykład dla k = 3, m = 8 S(A) = 0010 0110 S(B) = 1010 0001 S(C) = 1000 0010 S(D) = 0101 0100

  34. Podpis dla dokumentu • Logiczny OR na podpisach termów, które zawiera: dokument: podpis: d1 =[A, B]1010 0111 d2 = [A, B, D]1111 0110 d3 = [B, C, D]1111 0111 d4 = [A, D] 0111 0110 • S(A) = 0010 0110 • S(B) = 1010 0001 • S(C) = 1000 0010 • S(D) = 0101 0100

  35. Wyszukiwanie w SF • Oblicz podpis dla t, sprawdź które dokumenty zawierają podpis dla t • Te dokumenty być może zawierają t • dopuszczamy pomyłki lub • skanujemy wszystkie dokumenty aby to sprawdzić • Pozostałe dokumenty na pewno nie zawierają t

  36. Wyszukiwanie w SF • Przykład dokument: podpis: d1 = [A, B]1010 0111 d2 = [A, B, D]1111 0110 d3 = [B, C, D]1111 0111 d4 = [A, D] 0111 0110 • S(A) = 0010 0110 • S(B) = 1010 0001 • S(C) = 1000 0010 • S(D) = 0101 0100 • Uzyskane wyniki dla poszczególnych termów: A: d1, d2, d3, d4 C: d1, d2, d3 B: d1, d2, d3 D: d2, d3, d4

  37. Wyszukiwanie w SF • Złożone zapytania typu t1 AND t2: • oblicz podpis S(d) dla d = [t1, t2] • znajdź dokumenty zawierające S(d) • Tak samo szybkie jak dla pojedynczych termów • Mniejsze prawdopodobieństwo pomyłki

  38. pdb pomyłki 5 0.092 10 0.008 12 0.003 Ile pomyłek się zdarzy? • To zależy od parametrów • k - liczba funkcji haszujących • m - liczba bitów (ustalamy na ile nas stać) • n - liczba termów w dokumencie • Optymalnie jest • Prawdopodobieństwo pomyłki wynosi:

  39. Porównanie metod • Rozmiar w stosunku do oryginalnego tekstu (n) • Pliki odwrócone 0.05n - 0.4n • Tablice suffiksowe 0.4n • Signature files 0.1n - 0.2n • Wspomaganie wyszukiwania fraz • Tablice suffiksowe

More Related