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 2b
)
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