Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałSeweryna Sutkowski Został zmieniony 10 lat temu
1
Seminarium: Wyszukiwarki internetowe Marta Cylkowska
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
Konwersja formatu Dokumenty w postaci plików o różnych formatach
Dokument zawiera nie tylko treść, ale też strukturę i metadane Dokument tekst struktura metadane
5
Litery i inne znaki Białe znaki Wielkie i małe litery Myślniki
Bush, SOS, IDEA (International Data Encryption Standard) Myślniki co-education razem Hewlett-Packard razem lub osobno state-of-the-art. osobno San Francisco-Los Angeles osobno
6
Litery i inne znaki Znaki interpunkcyjne: Inne znaki z reguły pomijane
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. 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
programming, programmable, programmers, programmed program
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:
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:
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: Chcemy mieć je w postaci:
[dokument (pozycja), term] Chcemy mieć je w postaci: [term, częstość, lista dokumentów (pozycji)]
18
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ń A 2 4 5 12 B 14 C 28 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 Zapytanie złożone AND
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
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! B 2 14 C 3 4 5 22 23 24 A 12 Najlepsza kolejność to (A AND B) AND C
23
Skip pointers W pierwszej liście po 16 jest 32
128 128 2 4 8 16 32 64 8 31 31 1 2 3 5 8 17 21 W pierwszej liście po 16 jest 32 W drugiej można przeskoczyć dodatkowym wskaźnikiem 17, 21 nie muszą być przeglądane
24
Skip pointers Ile powinno być dodatkowych wskaźników? Dużo Mał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
Scalanie indeksów Budujemy indeksów o wielkości M Scalamy je w fazach
Faza III Faza II Faza I Budujemy indeksów o wielkości M Scalamy je w fazach
28
Dynamiczne zbiory Update jest kosztowny Wykonywany raz na jakiś czas
Dokumenty dodawane, usuwane pamiętane osobno
29
Dynamiczne zbiory
30
Tablice suffiksowe Listy uporządkowane w kolejności leksyko-graficznej tekstu znajdującego się po termie Łatwiejsze wyszukiwanie fraz Ala nie ma kota, czy Ala ma kota? ala 1 22 kot 12 29 ma 9 26 nie 5 Plik odwrócony Tablica suffiksowa ala 22 1 kot 29 12 ma 26 9 nie 5
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: Podpis to ciąg m-bitowy
[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 dokumentu d, 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) = S(B) = S(C) = S(D) =
34
Podpis dla dokumentu Logiczny OR na podpisach termów, które zawiera:
dokument: podpis: d1 = [A, B] d2 = [A, B, D] d3 = [B, C, D] d4 = [A, D] S(A) = S(B) = S(C) = S(D) =
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 Uzyskane wyniki dla poszczególnych termów:
dokument: podpis: d1 = [A, B] d2 = [A, B, D] d3 = [B, C, D] d4 = [A, D] S(A) = S(B) = S(C) = S(D) = 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
Ile pomyłek się zdarzy? To zależy od parametrów Optymalnie jest
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: pdb pomyłki
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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.