Fourier Domain Scoring – skrót
Transkrypt
Fourier Domain Scoring – skrót
Fourier Domain Scoring – skrót Wstęp Dokument opisuje metodę Fourier Domain Scoring (FDS) wyszukiwania informacji w wielkiej bazie danych jaką jest sieć www. Zastosowanie FDS daje ok. 60% lepsze rezultaty w porównaniu do dotychczas używanej metody – Vector Space Similarity (jeśli weźmiemy pod uwagę krótkie zapytania. Przy dłuższych efekty są porównywalne). Dlaczego Vector Space Similarity jest złe Pomysłem w metodzie Vector Space Similarity jest to, aby każdy dokument przekształcić w wektor, tak aby mógł on być łatwo porównany do innego wektora (oznaczającego zapytanie lub inny dokument). Dokładniej: “The document vectors exist in a space where each dimension is one unique term from the document set. The size of the document vector along each dimension is a weighted count of that word in the document”. A zatem metoda ta zaniedbywała ułożenie przestrzenne danych w dokumencie (zresztą w większości technik pozycja słów w dokumencie - ‘the flow of the document’ – jest ignorowana). Ponadto pojawia się problem prób 'oszukania' silnika przetwarzającego dokument (jako słowa kluczowe podaje się takie, aby dokument miał wysoki ranking w przeglądarce - ale tekst jest na inny temat) – metoda, która tylko zlicza ilość słów, jest wrażliwa na takie próby. Aby rozwiązać te problemy w wyszukiwarce google zapamiętuje się pozycję każdego zindeksowanego słowa w dokumencie. Wyższe miejsce w rankingu mają dokumenty, zawierające wyrazy ujęte w zapytaniu blisko siebie. Wymaga to jednak kosztownych obliczeń w czasie zapytania (at query time). Zastosowanie FDS pozwoliło by na zwiększenie szybkości działania. Fourier Domain Scoring Różnica pomiędzy FDS a innymi metodami typu Vector Space Similarity polega na tym, że FDS próbuje przechwycić ‘pojawianie się słowa przez dokument’ (appearence of the word through the document) – a nie tylko zliczać ilość wystąpień danego słowa w dokumencie. FDS przechowuje pewien sygnał dla każdego słowa (show how the term is spread throughout the document) – opisuje każdy dokument zestawem wektorów (word vector), gdzie każdy wektor opisuje pojawianie się jednego słowa. Kolejne kroki FDS 1) Collect words into spatial bins: aby zredukować rozmiar wektora opisującego dane słowo (word vector) dokument jest dzielony na pojemniki (bins). Jeśli ustalimy liczbę pojemników na B, to dokument zawierający W słów będzie zawierał W/B słów w każdym pojemniku. (uwaga *2) Przykład powstawania ‘word signals’ (W University of Melbourne teksty były dzielone na 8 pojemników. Gdy dzielili na 4 wyniki okazywały się mniej trafne – aczkolwiek wymagały mniej obliczeń. Dla większej liczby pojemników obliczenia były zbyt długotrwałe) 2) Create inverted index : odwracanie indeksów. Po przeprowadzeniu tej operacji każde słowo w dokumencie jest reprezentowane jako < n >< b1, f1 > ... < bn, fn > , gdzie 'n' oznacza ilość pojemników, w których wystąpiło dane słowo, 'bi' oznacza numer pojemnika, natomiast 'fi' oznacza ilość wystąpień danego słowa w pojemniku 'bi' (przykładowo dla wyrazu ‘cat’ z powyższego przykładu mieli byśmy <3><0,1><3,2><5,2>) 3) Perform preweighting : obliczenie wstępnej miary dopasowania dokumentu. S cos (d , T ) 1 W d Wt (1 log e f d , t ) log e (1 t T d N ) ft Wstępna miara ‘S(d,T)’ oznacza punkty dane dokumentowi 'd' gdy w pytaniu pojawia się termin (słowo) 'T'. Obliczanie wstępnej miary jest (najczęściej) przeprowadzane już podczas indeksowania danego dokumentu. Przy liczeniu wstępnej miary nie zwracamy jeszcze uwagi na to, że podzieliliśmy słowa w dokumencie na pojemniki - liczymy miarę dla całego dokumentu. (wyjaśnienie: obliczanie wstępnej miary pozwala na odfiltrowanie słów potocznych – takich, które najczęściej się pojawiają ale jednocześnie nie powinny mieć wielkiego wpływu na pozycję danego dokumentu. Wyniki prewejghtningu mogą, ale nie muszą, być używane w dalszych krokach FDS. Tzn. dalsze operacje, przeprowadzane w kroku czwartym, mogą być wykonywane zarówno na wektorach 'word signal' określających jedynie liczebność słów w kolejnych pojemnikach jak i na tych samych wektorach, ale po zważeniu). (uwaga *3) 4) Perform Fourier transform: B 1 v d ,t , d ,t ,b exp( b 0 i 2b ) B gdzie: B b d ,t v d ,t , : ilość pojemników (bins); określa długość wektora wejściowego dla DFT/FFT : kolejne pojemniki : wejściowy ‘word signal’ (wektor utworzony dla danego słowa). Zatem d ,t ,b oznacza ilość wystąpień terminu ‘t’ w pojemniku (bin) ‘b’ dokumentu ‘d’ (ewentualnie może to być wektor opisujący to samo, ale już po zważeniu). : projekcja ‘word signal’ na sinusoidalną falę o częstotliwości β (zakładamy, że β przyjmuje po kolei wartości 0, 1, ..., B-1) Dzięki wykonaniu tej transformacji jesteśmy w stanie zobaczyć “how the word flows through the document”. Jeśli dwa sygnały mają tą samą fazę powiemy, że są ze sobą w fazie (oznacza to, że pojawiają się wspólnie danym dokumencie). Jeśli jednak sygnały mają przeciwną fazę (różną o π radianów), wtedy są poza fazą (out of phase). Jeśli dwa lub więcej słów jest ze sobą w fazie, wskazuje to iż pojawiają się one razem (biorąc pod uwagę przepływ słów w danym dokumencie). 5) Calculate document scores: obliczanie punktów dla konkretnego dokumentu i pytania (właściwie jedyne obliczenia jakie musimy przeprowadzić dla danego dokumentu ‘at query time’). Po wykonaniu transformaty Fouriera na wektorach o długości B otrzymujemy wektory składające się z (1+B/2) niezależnych liczb zespolonych (dla każdego słowa zawartego w pytaniu otrzymujemy jeden wektor o długości B; Jednak z właściwości Dyskretnej Transformaty Fouriera wychodzi, że jest w nim 1+B/2 niezależnych wartości zespolonych). Pojedyncza liczba zespolona oznacza amplitudę (Magnitude) oraz fazę (Phase precision) dla pewnej częstotliwości. Istnieje wiele różnych metod obliczania punktów dla dokumentu. Jednym ze sposobów wykorzystania tych liczb jest użycie iloczynu skalarnego. Inny sposób to pomnożenie 'Magnitude x Phase precision' Moje uwagi: (*1) Niestety tutaj nie ma miejsca na sztuczą inteligencję (przynajmniej jeżeli chodzi o same obliczenia ‘at query time’, czyli podczas rozpatrywania czy dany dokument odpowiada kryteriom postawionym w pytaniu). Sztuczna inteligencja wymaga zbyt wiele mocy obliczeniowej - tutaj dąży się natomiast do przetwarzania tekstu jak najszybciej, z wykorzystaniem jak najkrótszych algorytmów (tzn. używa się raczej krótkich i wydajnych algorytmów). (*2) Myślę, że nie powinno się dzielić dokumentu na komórki (bins) o stałej wielkości (biorąc pod uwagę liczbę słów). Lepiej było by zwrócić uwagę na semantykę dokumentu (np. podzielić na zasadzie, że jeden rozdział oznacza jeden pojemnik. Ewentualnie gdy rozdział jest długi, to dzielimy go akapitami na podpojemniki. W ten sposób unikamy 'głupich' podziałów. Ponadto jesteśmy w stanie stosować różne wagi dla słów znajdujących się w różnych miejscach – tzn. jeśli słowo występuje w tytule lub jest w jakiś sposób wytłuszczone czy podkreślone to powinno być bardziej istotne niż słowo występujące w zwykłym tekście) Moim zdaniem należy działać bardziej tak, jak 'działa człowiek' (analizując najpierw rzucające się w oczy rzeczy... większe, wytłuszczone, oznaczone innym kolorem) – akurat w tym miejscu można by postarać się wykorzystać algorytmy inteligentne, gdyż takie badanie (i dzielenie na pojemniki) jest wykonywane tylko raz dla jednego dokumentu, a zatem nie marnuje się na to czasu ‘at query time’. Problem – należy wymyślić taką metodę liczenia punktów, która będzie dawać podobną liczbę punktów podobnym dokumentom, ale podzielonym na różne ilości pojemników. (*3) Prewejghtning można wykonać na wiele sposobów – wzór podany przez autorów to tylko przykład. W moim programie demonstracyjnym raczej będę unikał ważenia. Powodem jest to, że zaprezentowana metoda preweightningu wymaga badania wielu dokumentów (aby określić, czy dane słowo jest potoczne sprawdza się w ilu już zbadanych dokumentach pojawiło się to słowo). Program demonstrujący działa jednak na tylko jednym dokumencie. Dlatego też została zastosowana inna metoda – wymagane jest podanie słów kluczowych w treści dokumentu (badane są wtedy tylko słowa kluczowe, a zatem i tak dochodzi do odfiltrowania słów potocznych). Daniel Dusiński, Łódź 2003