background image

           

           

 

 

 

 

Obliczenia dla kompletnego 

systemu wyszukiwania

Przypomnienie: wagi tf-idf

Waga tf-idf termu jest iloczynem jego wagi tf 
i wagi idf. 

To najlepszy znany system ważenia w IR

Rośnie ze wzrostem wystąpień w dokumencie

Rośnie ze wzrostem rzadkości termu w 
kolekcji

)

df

/

(

log

)

tf

log

1

(

w

10

,

,

t

d

t

N

d

t

1

background image

           

           

 

 

 

 

Przypomnienie: Pytania jako 
wektory

Zasada 1: 

Zrób to samo z pytaniami: 

przedstaw je jako wektory w przestrzeni

Zasada 2: 

Rankinguj dokumenty wg ich 

odległości od pytania w tej przestrzeni

odległość = podobieństwo wektorów

2

background image

           

           

 

 

 

 

Powtórzenie: kosinus(pytanie 
dokument)

V

i

i

V

i

i

V

i

i

i

d

q

d

q

d

d

q

q

d

q

d

q

d

q

1

2

1

2

1

)

,

cos(

iloczyn

Wektory jednostkowe

cos(q,d) to podobieństwo kosinusowe q i d … lub,
równoważnie, kosinus kąta między  q i d.

3

background image

           

           

 

 

 

 

Nowe: obliczanie wartości 
kosinusa

4

background image

           

           

 

 

 

 

Efektywny ranking kosinusowy

Znajdź K docs w kolekcji “najbliższych” 
do pytania  największych query-doc 

kosinusów.

Efektywny ranking:

Obliczanie efektywne pojedynczego 
kosinusa.

Efektywne wybranie największych 
wartości kosinusa.

Czy możemy to wykonać bez obliczania 
wszystkich  N kosinusów?

5

background image

           

           

 

 

 

 

Efektywny ranking kosinusowy

Co robimy w efekcie: rozwiązujemy 
problem  K-najbliższych sąsiadów dla 
wektora pytania

W ogólności, nie wiemy jak to wykonać 
efektywnie dla przestrzeni o dużym 
wymiarze

Ale jest to rozwiązane dla krótkich i 
standardowe indeksy tu pomagają

6

background image

           

           

 

 

 

 

Specjalny przypadek – pytania 
bez wag

Nie ma ważenia termów pytania

Zakładamy, że każdy term pytania 
występuje tylko raz

Wtedy dla rankingu nie musimy 
normalizować wektora pytania

Lekkie uproszczenie algorytmu z w_06

7

background image

           

           

 

 

 

 

Szybszy kosinus: pytanie bez 
wag

8

background image

           

           

 

 

 

 

Obliczanie K największych 
kosinusów: wybór kontra 
sortowanie

Zwykle potrzebujemy znaleźć K 
najwyższych docs (w rankingu 
kosinusowym dla pytania)

Nie szukamy uporządkowania 
wszystkich dokumentów w kolekcji

Czy możemy wybrać docs z K 
największymi kosinusami?

Niech J = liczba docs z niezerowymi 
kosinusami

Szukamy K najlepszych wśród tych J

9

background image

           

           

 

 

 

 

Użycie sterty do znalezienia 
największych

Drzewo binarne, w którym każda wartość 
węzła > wartości dzieci

Wymaga 2J operacji dla budowy, wtedy 
każdy z  “zwycięzców” jest odczytany w 
2log J krokach.

Dla J=1M, K=100, jest to około 10% kosztu 
sortowania.

1

.9

.3

.8

.3

.1

.1

10

background image

           

           

 

 

 

 

Wąskie gardła

Pierwsze obliczeniowe: obliczenie kosinusa

Czy możemy uniknąć tych wszystkich 
obliczeń?

Tak, ale czasami złe wyniki

Dokumenty spoza najlepszych K mogą 
wejść na  listę K wyjściowych docs

Czy to taka zła sytuacja?

11

background image

           

           

 

 

 

 

Kosinusowe podobieństwo jest 
tylko przybliżeniem

Użytkownik ma zadanie i sformułowanie 
pytania

Cosinus dopasowuje dokumenty do 
pytania

Więc kosinus jest jedynie przybliżeniem 
dla satysfakcji użytkownika

Jeśli dostaniemy listę K docs “bliskich” do 
najlepszych K wg miary kosinusowej – 
będzie dobrze

12

background image

           

           

 

 

 

 

Ogólne podejście

Znajdź zbiór składników z K < |A| << N

nie koniecznie zawiera najlepsze  K, ale ma 
wiele docs bliskich najlepszemu K

Zwróć najlepsze docs do A

Przyjmij  A jako pruning (przycinanie) nie 
kandydujące

To samo podejście jest także stosowane dla 
innych (nie-kosinusowych) funkcji 
obliczających

Pokażemy kilka schematów zgodnych z tym 
podejściem

13

background image

           

           

 

 

 

 

Eliminacja indeksowa

Podstawowy algorytm z Rys 7.1 
rozpatrywał tylko dokumenty zawierające 
co najmniej jeden term pytania

Idźmy dalej:

Rozpatrzmy tylko termy pytania z wysokim idf 

Rozpatrzmy tylko dokumenty zawierające wiele 
termów pytania

14

background image

           

           

 

 

 

 

Tylko termy pytania z wysokim 
idf 

Dla takiego pytania jak catcher in the rye

Pamiętamy wyniki dla catcher i rye

Intuicja: in the mają mały wpływ na 
wyniki więc  nie zmieniają dużo w rankingu

Korzyść:

Wystąpienia termów z małym idf mają wiele 
docs  te  (wiele) docs jest eliminowanych ze 

zbioru kandydatów 

15

background image

           

           

 

 

 

 

Dokumenty zawierające kilka 
termów pytania

Każdy dokument z co najmniej jednym 
termem pytania jest kandydatem do K 
wyjściowej listy

Dla wielotermowych pytań, obliczenia 
tylko dla  docs kilka termów pytania

Powiedzmy, co najmniej 3 z 4

Powoduje “soft conjunction” dla pytań 
obserwowaną dla silników wyszukiwawczych 
(wczesne Google)

Łatwa implementacja przy przechodzeniu 
przez listy wystąpień

16

background image

           

           

 

 

 

 

3 z 4 termów pytania

Brutus

Caesar

Calpurnia

1

2

3

5

8

13 21 34

2

4

8 16 32 64128

13 16

Antony

3 4

8 16 32 64128

32

Wyniki obliczane tylko dla docs 8, 16 and 32.

17

background image

           

           

 

 

 

 

Listy czempionów

Oblicz wstępnie dla każdego termu t ze słownika, 
r docs z najwyższymi wagami dla wystąpień t

Nazwij  champion list dla t

(znane też jako fancy list lub top docs dla t)

Zauważmy, że r musi być wybierane w czasie 
budowy indeksu

Więc jest możliwe, że r < K

W czasie obsługi pytania, obliczaj wyniki tylko 
dla docs na champion list dla pewnych termów 
pytania

Wybierz  K docs z najwyższymi wynikami ze 
wszystkich list

18

background image

           

           

 

 

 

 

Quantitative

Quantitative

Statyczne wyniki jakości

Chcemy aby dokumenty top-ranking były 
relewantne i wiarygodne

Relewancja jest modelowana przez wynik 
kosinusa

Wiarygodność  jest zwykle niezależną od pytania 
własnością dokumentu

Przykłady oznak wiarygodności

Wikipedia w porównaniu z innymi websites

Artykuły z pewnych gazet

Artykuł z wieloma cytowaniami

Wiele diggs, Y!buzzes or del.icio.us znaków

(Pagerank)

19

background image

           

           

 

 

 

 

Modelowanie wiarygodności

Przypisz do każdego dokumentu d 
niezależny od pytania  wskaźnik jakości w 
[0,1]

Oznacz go przez g(d)

Więc, wielkość jak liczba cytowań jest 
skalowana do [0,1]

20

background image

           

           

 

 

 

 

Wynik netto

Rozpatrzmy prosty wynik wiążący 
kosinusową relewancję i wiarygodność

net-score(q,d) = g(d) + cosine(q,d)

Możemy użyć jakąś inną kombinację liniowa 
zamiast powyższej

Oczywiście chodzi o jakąś funkcję tych dwóch 
sygnałów zadowolenia użytkownika – później

Teraz szukamy  top K docs wg net score

21

background image

           

           

 

 

 

 

Top wg net score – szybkie 
metody

Pierwsza zasada: Porządkuj wszystkie 
wystąpienia wg g(d)

Ważne: to jest wspólne uporządkowanie 
dla wszystkich wystąpień

Więc możemy współbieżnie przechodzić 
wystąpienia termów pytania dla

Przecięcia wystąpień

Obliczenia wyniku kosinusa

22

background image

           

           

 

 

 

 

Dlaczego porządkowanie 
wystąpień wg g(d)?

Dla uporządkowania wg g(d), top docs 
najprawdopodobniej wcześnie pokażą się 
w wynikach przeglądania list

Dla aplikacji ograniczonych czasowo 
(powiedzmy, musimy zwrócić jakieś wyniki 
wyszukiwania w 50 ms), to pozwala nam 
przerwać przeszukiwanie wcześnie

Krótkie wyniki dla wszystkich wystąpień 
dokumentów

23

background image

           

           

 

 

 

 

Listy czempionów w 
uporządkowaniu  g(d)

Możemy złożyć listy czempionów 
uporządkowaniem g(d)

Utrzymuj dla każdego termu listę 
czempionów  r docs z najwyższymi g(d) + 
tf-idf

td

Szukaj top-K wyników wśród dokumentów 
tylko z list czempionów

24

background image

           

           

 

 

 

 

Listy high i low 

Dla każdego termu utrzymujemy dwie listy 
odwołań zwane high low

Przyjmijmy, że  high jest listą czempionów

Gdy przechodzimy wystąpienia dla pytania – na 
początku przemierzamy tylko listy  high 

Jeśli otrzymamy więcej niż K docs, wybieramy top 
stop

W przeciwnym przypadku szukamy dokumentów z list 
low

Czy możemy użyć podobieństwa kosinusowego 
bez globalnego g(d)

Metody podziału indeksu na dwa poziomy (tiers)

25

background image

           

           

 

 

 

 

Uporządkowanie wystąpień wg 
wpływu (impact) 

Chcemy obliczać wyniki tylko dla 
dokumentów , które mają odpowiednio 
wysoki wf

t,d

 

Sortujemy każdą listę wystąpień wg wf

t,d

Teraz: nie wszystkie wystąpienia są we 
właściwym porządku!

Jak możemy wyliczyć wyniki aby 
wyciągnąć  top K?

Dwa pomysły poniżej

26

background image

           

           

 

 

 

 

1. Szybkie kończenie

Jeśli przechodzisz wystąpienia dla termu t , 
skończ po

Ustalonej liczbie r docs

lub

wf

t,d  

spadnie poniżej pewnego progu

Wykonaj unie wynikowych zbiorów 
wyników

Po jednym z wystąpieniu dla każdego termu z 
pytania

Oblicz wyniki tylko dla dokumentów z tej 
unii

27

background image

           

           

 

 

 

 

2. Termy uporządkowane wg idf

Gdy rozpatrujemy wystąpienia termów 
pytania

Przeglądaj wg malejącego  idf

Termy o wysokim idf prawdopodobnie 
najbardziej wpływają na wynik

Podczas uaktualniania wyniku dla każdego 
termu

Zakończ jeśli wynik dla doc jest relatywnie 
niezmieniony

Można zastosować kosinus lub inne wyniki 
netto

28

background image

           

           

 

 

 

 

Przycinanie klastrów: 
preprocessing

Wybierz losowo N docs: nazwij je 

liderami

Dla każdego innego dokumentu, 
oblicz najbliższego lidera

Docs dołączone do lidera: to jego 
następniki;

Prawdopodobnie: każdy lider ma ~ 
N następników.

29

background image

           

           

 

 

 

 

 Przycinanie klastrów: 
przetwarzanie pytań

Przetwarzaj pytania w następujący 
sposób:

Dla danego pytania Q, znajdź 
najbliższego lidera L.

Wyszukaj  K najbliższych docs z 
nastepników tego  L.

30

background image

           

           

 

 

 

 

Wizualizacja

Query

Leader

Follower

31

background image

           

           

 

 

 

 

Dlaczego używamy losowe 
próbkowanie

Jest szybkie

Liderzy odwzorowują rozkład danych

32

background image

           

           

 

 

 

 

Podejście ogólne

Utrzymuj każdy następnik dołączony do 
b1=3 (powiedzmy) najbliższych liderów.

Z pytania, znaleźć b2=4 (powiedzmy) 
najbliższych liderów i ich następniki.

Możesz powtarzać konstrukcję 
lider/następnik.

33

background image

           

           

 

 

 

 

Parametryczne i strefowe 
indeksy

Do tej pory dokument był sekwencją 
termów

W praktyce dokumenty mają wiele części – 
niektóre o specjalnym znaczeniu:

Autor

Tytuł

Data publikacji

Język

Format

etc.

Tworzą one metadane dla dokumentu

34

background image

           

           

 

 

 

 

Pola

Czasami chcemy wyszukiwać wg metadanych

Np.: znajdź docs autorstwa Williama Shakespeare 
w roku 1601, zawierające alas poor Yorick

Rok = 1601 jest przykładem pola

Tak samo, nazwisko autora = shakespeare, itd

Indeks dla pól lub parametrów: wystąpienia 
dla dla każdej wartości pola

Czasami tworzą drzewa zakresowe (np.: dla dat)

Pytania o pola zwykle są traktowane jako 
koniunkcje

(doc musi być autorstwa shakespeare)

35

background image

           

           

 

 

 

 

Strefa

Strefa jest częścią dokumentu zawierającą 
określony tekst np.:

Tytuł

Abstrakt

Literatura …

Budowane są indeksy odwrotne 
pozwalające na przetwarzanie pytań

Np.: “znajdź dokumenty z merchant 
strefie tytuł i dla pytania  gentle rain”

36

background image

           

           

 

 

 

 

Przykładowe indeksy strefowe

Kodowanie stref w słowniku vs. wystąpienia.

37

background image

           

           

 

 

 

 

Indeksy poziomowe

Podziel wystąpienia na hierarchię list

Najważniejsze

Najmniej ważne

Podział może być wg g(d) lub innej miary

Indeks odwrotny jest dzielony na warstwy 
wg malejącej ważności

W czasie przetwarzania pytania  używamy 
najwyższą warstwę chyba, że nie uzyskamy  
docs

Jeśli tak przechodzimy do niższych warstw

38

background image

           

           

 

 

 

 

Przykład indeksu warstwowego

39

background image

           

           

 

 

 

 

Bliskość termów pytania

Pytania tekstowe: to zbiór termów wpisanych 
do okienka pytania – typowe dla web

Użytkownicy wolą dokumenty, w których 
termy z pytania są blisko siebie

Niech w będzie najmniejszym oknem w doc 
zawierającym wszystkie termy pytania np.:

Dla pytania strained mercy najmniejsze okno 
w doc The quality of 

mercy is not strained

 

jest 4 (słowa)

Czy chcecie funkcję wynikową 
uwzględniającą to – jak?

40

background image

           

           

 

 

 

 

Parsery pytań

Pytania tekstowe mogą tworzyć jedno lub wiecej 
pytań do indeksów, np.: pytanie 

rising interest 

rates

Przetwarzaj pytanie jako pytanie o frazę 

Jeśli  <K docs zawierających frazę rising interest rates
przetwarzaj dwa pytania o frazę rising interest  i 
interest rates

Jeśli ciągle mamy <K docs, przetwarzaj pytanie w 
przestrzeni wektorowej rising interest rates

Rankinguj dopasowanie docs wg wyników dla 
przestrzeni wektorowej

Ta sekwencja została wytworzona przez parser 
pytania

41

background image

           

           

 

 

 

 

Agregacja wyników 
dopasowania

Widzieliśmy, że funkcje dopasowania 
mogą łączyć kosinus, statyczną jakość, 
bliskość itd

Jak stwierdzić, która kombinacja jest 
najlepsza?

W wielu aplikacjach  – dobierane przez 
ekspertów

Coraz powszechniejsze: uczenie 
maszynowe

42

background image

           

           

 

 

 

 

Złożenie w całość omawianych 
części

43


Document Outline