2..22 Zaglądamy pod maskę: podstawy działania silnika wyszukiwawczego na przykładzie Lucene Dominika Puzio
Indeks
Podstawy: dokument Dokument: jednostka danych, pojedynczy element na liście wyników wyszukiwania, to co chcemy wyszukiwać ( strona www, artykuł, post, dobro konsumpcyjne ) dokument id: content: Ala ma kota pole 3
Podstawy: indeks Indeks: repozytorium, w którym silnik wyszukiwawczy przechowuje dane, zorganizowane w taki sposób, aby dało się w nich szybko wyszukiwać id: content: Ala ma kota id:2 content: Ola ma psa id:3 content: Ala lubi psa 4
Indeks odwrócony doc content: content: Ala Ala ma ma kota kota doc2 content: content: Ola Ola ma ma psa psa doc3 content: content: Ala Ala lubi lubi psa psa ala 3 ma 2 kota ola 2 psa 2 3 lubi 3 5
Indeks: budowanie doc content: content: Ala Ala ma ma kota kota content:ala 3 doc2 content: content: Ola Ola ma ma psa psa doc3 content: content: Ala Ala lubi lubi psa psa content:kota content:ma content:lubi content:ma 3 2 content:ola content:ma 2 2 content:psa content:ola 2 content:psa 2 3 6
Indeks: słownik content:ala 3 content:kota słownik content:lubi 3 content:ma 2 content:ola 2 content:psa 2 3 termy listy id dokumentów 7
Indeks: słownik doc id: id: content:ala ma ma kota kota content:ala 3 content:kota doc2 id:2 id:2 content:ola ma ma psa psa doc3 id:3 id:3 content:ala lubi lubi psa psa content:lubi 3 content:ma 2 content:ola 2 content:psa 2 3 id: id:2 2 id:3 3 8
Indeks: przebieg wyszukiwania QUERY: [content: ala] content:ala 3 QUERY: [content: ala OR content: kota] content:ala 3 content:kota OR 3 QUERY: [content: ala AND content: kota] content:ala 3 content:kota AND 9
Indeks: oglądamy słownik Luke czytnik indeksów Lucene
Algorytm scoringu (czyli dlaczego kot jest ważniejszy niż pies)
Vector Space Model i trochę historii historycznie: idea użycia komputerów do poszukiwania informacji pojawiła się w 945 roku (http://www.theatlantic.com/magazine/archive/945/7/as-we-may-think/3388/) pierwsze silniki wyszukiwawcze (akademickie) lata 5' pierwsze wielkoskalowe silniki wyszukiwawcze, gotowe do użytku komercyjnego lata 7' Vector Space Model: algebraiczny model dokumentu tekstowego, opracowany i pierwszy raz użyty w latach 6' na Cornell University jako część systemu SMART (System for the Mechanical Analysis and Retrieval of Text) jednej z pierwszych tekstowych wyszukiwarek Vector Space Ranking: algorytm scoringu oparty o Vector Space Model 2
Informacje zawarte w słowniku content:ala 3 content:kota content:lubi 3 content:ma 2 content:ola 2 dokument : zawiera słowo ala dokument 2: nie zawiera słowa ala dokument 3: zawiera słowo ala content:psa 2 3 3
Alternatywny zapis słownika doc doc2 doc3 content:ala content:kota content:lubi content:ma content:ola content:psa Indeks macierzowy 4
Vector Space Model: wektor dokumentu doc doc2 doc3 ala kota doc3 lubi doc2 ma doc ola psa ala kota lubi ma ola psa wektor dokumentu wektor dokumentu doc w przestrzeni doc słów 5
Vector Space Model: waga słów doc ala kota lubi ma ola psa Założenie Vector Space Model: informacja o tym, że słowo wystąpiło w dokumencie (lub nie) nie jest wystarczająca. Model bierze pod uwagę również to, że: im więcej wystąpień słowa w dokumencie, tym wyżej powinien być na liście wyników nie wszystkie słowa są jednakowo ważne 6
Vector Space Model: waga słów Wartością współrzędnej słowa s w dokumencie d jest waga w s, d obliczana na podstawie liczby wystąpień słowa s w dokumencie d i wartości informacyjnej słowa s. doc w ala,doc w kota,doc w lubi,doc w ma,doc w ola,doc w psa,doc ala kota lubi ma ola psa 7
Vector Space Model Krok : każde słowo w dokumencie dostaje wagę zależną od liczby wystąpień słowa w dokumencie i wartości informacyjnej słowa bierzemy pod uwagę liczbę wystąpień poszukiwanego słowa w dokumencie - im więcej razy słowo z zapytania wystąpiło w dokumencie, tym wyższy score dla dokumentu dla każdego słowa w dokumencie mamy liczbę: tf s, d (term frequency) = liczba wystąpień słowa s w dokumencie d dla każdego słowa w dokumencie wyznaczamy wagę wg. wzoru: w s, d = log tf s, d dlatf s,d w przeciwnym wypadku 8
Vector Space Model Dlaczego logarytm? w s,d = log tf s, d dlatf s,d w przeciwnym wypadku żeby nie mieć zależności wprost (dokument zawierający słowo razy, nie jest razy lepszy od tego, który zawiera je raz) Dlaczego +log? żeby słowo, które wystąpiło w dokumencie raz, nie otrzymało wagi ( log = ) Dlaczego osobno przypadek, kiedy tf s, d =? dlatego, że log = -ꝏ 9
Vector Space Model Krok : każde słowo w dokumencie dostaje wagę zależną od liczby wystąpień słowa w dokumencie i wartości informacyjnej słowa bierzemy pod uwagę liczbę wystąpień poszukiwanego słowa w całym indeksie im rzadsze słowo, tym więcej informacji niesie i dokument je zawierający powinien mieć wyższy score dla każdego słowa w dokumencie mamy liczbę: df s (document frequency) = liczba dokumentów w indeksie zawierających słowo s dla każdego słowa w dokumencie wyznaczamy tzw. inverse document frrequency: idf s =log N df s N - liczba wszystkich dokumentów w indeksie 2
Vector Space Model Krok : każde słowo w dokumencie dostaje wagę zależną od tf i idf dla każdego słowa w dokumencie wyznaczamy wagę: w s, d = log tf s,d log N df s waga jest wyznaczana podczas indeksowania i zapisywana w indeksie Przykład: doc doc2 doc3 ala tf ala, doc = tf ala,doc3 = tf ala,doc2 = N = 3 df ala = 2 w ala,doc =w ala, doc3 = log log 3 2,58 w ala,doc2 = log 3 2 = 2
Vector Space Model Krok 2: każdy dokument przedstawiamy jako wektor w przestrzeni słów doc w ala,doc w kota,doc w lubi,doc w ma,doc w ola,doc w psa,doc ala kota lubi ma ola psa doc: Ala ma kota doc [,58,58,58 ] ala kota lubi ma ola psa 22
Vector Space Model Krok 2: każdy dokument przedstawiamy jako wektor w przestrzeni słów doc: Ala ma kota doc2: Ola ma psa doc3: Ala lubi psa doc [,58,58,58 ] doc2 [,58,58,58 ] doc3 [,58,58,58 ] ala kota lubi ma ola psa 23
Vector Space Model (Ranking) Krok 3: zapytanie przedstawiamy jako wektor w przestrzeni słów z: kota i psa z [,58,58 ] ala kota lubi ma ola psa 24
Vector Space Model (Ranking) Krok 4: liczymy odległość pomiędzy wektorem zapytania a wektorem dokumentu odległość Euklidesowa nie jest dobra: a b a b d a, b = a, b = d a, b =.5.25 2.5.25 2.35 a, b = 25
Vector Space Model (Ranking) Krok 4: liczymy odległość pomiędzy wektorem zapytania a wektorem dokumentu jako miary odległości można użyć kąta między wektorami ale obliczanie kąta jest trudne (π!) zamiast samego kąta można policzyć jego cosinus: cos = cos9 = cos a, b = a b a b = i i a i 2 a i b i i b i 2 cosinus kąta między wektorami = odległość cosinusowa wektorów 26
Vector Space Model (Ranking). każde słowo w dokumencie dostaje wagę zależną od liczby wystąpień słowa w dokumencie i wartości informacyjnej słowa 2. każdy dokument przedstawiamy jako wektor w przestrzeni słów 3. zapytanie przedstawiamy jako wektor w przestrzeni słów 4. liczymy odległości cosinusowe pomiędzy wektorem zapytania a wektorami dokumentów 5. sortujemy dokumenty malejąco według odległości ich wektorów od wektora zapytania uproszczony wzór na score dokumentu: score q,d = s q s q d log tf s, q idf s log tf s, d idf s log tf s, q idf s 2 s d log tf s,d idf s 2 27
Vector Space Model w praktyce gdzie: scoring Lucene: score q,d = q d q querynorm q tf t,d idf 2 t boost s norm t, d t q querynorm(q) - czynnik normalizujący (stała), wprowadzony aby dało się porównać wyniki różnych typów zapytań, nie ma wpływu na pozycję dokumentu na liście tf zmodyfikowane term frequency idf zmodyfikowane inverse document frequency boost(s) dodatkowa waga słowa (termu) ustawiana w treści zapytania norm(t, d) norma dokumentu, liczba obliczana w trakcie indeksowania i zapisywana w indeksie: boost(d) dodatkowa waga dokumentu, ustawiana w czasie indeksowania field - długość pola (liczba słów) tf t, d := tf t,d N idf t := log df norm t,d =boost d boost field field boost(field) dodatkowa waga pola, ustawiana w czasie indeksowania 28
Vector Space Model w praktyce normy dokumentów 29
Vector Space Model w praktyce wartości tf dla każdego termu słownik + df dla każdego termu 3
Zasoby wiedzy Lucene Wiki: http://wiki.apache.org/lucene-java Luke http://code.google.com/p/luke/ Java User List: java-user@lucene.apache.org M. McCandless, E. Hatcher, O. Gospodnetić Lucene in Action, Second Edition Lucid Works:http://www.lucidworks.com/ C.D. Manning, P. Raghavan, H. Schutze Introduction to Information Retrieval http://www-csli.stanford.edu/~hinrich/information-retrieval-book.html 3