43
Információ Visszakeresés A diák nagyban támaszkodnak a Stanford Egyetem „Information Retrieval and Web-mining” kurzusának anyagára: http://www-csli.stanford.edu/~schuetze/information-retrieval- book.html

Információ Visszakeresés

  • Upload
    venice

  • View
    21

  • Download
    0

Embed Size (px)

DESCRIPTION

Információ Visszakeresés. A diák nagyban támaszkodnak a Stanford Egyetem „Information Retrieval and Web-mining” kurzusának anyagára: http://www-csli.stanford.edu/~schuetze/information-retrieval-book.html. Áttekintés. Mi az IR? Indexelés Egyszerű index Invertált index, Gamma-kódolás - PowerPoint PPT Presentation

Citation preview

Page 1: Információ Visszakeresés

Információ Visszakeresés

A diák nagyban támaszkodnak a Stanford Egyetem „Information Retrieval and Web-mining” kurzusának anyagára:

http://www-csli.stanford.edu/~schuetze/information-retrieval-book.html

Page 2: Információ Visszakeresés

Áttekintés• Mi az IR?

• Indexelés– Egyszerű index– Invertált index, Gamma-kódolás

• Rangsorolás– TF-IDF rangsor– PageRank

• Google röviden– Architektúra– További rangsorolási szempontok

(amiket nem veszünk részletesen)

Page 3: Információ Visszakeresés

Információ Visszakeresés• IR alapprobléma

– Adott egy korpusz(dokumentumok halmaza, internet)

– Felhasználó az információigényét leginkább kielégítő dokumentumokat keresi

• Lekérdezést fogalmaz meg

– Cél a lekérdezésnek megfelelő dokumentumok listája

Page 4: Információ Visszakeresés

Egy IR rendszer legfontosabb jellemzői

• Indexelés sebessége (nem fontos)

• Lekérdezés sebessége

• Lekérdező nyelv kifejezőereje (mit kérdezhetünk meg és mit nem?)

• Pontosság (a legfontosabb, de a mérése összetett feladat)

Page 5: Információ Visszakeresés

Egy keresőmotor sémája

Page 6: Információ Visszakeresés

Indexelés vs. Adatbázis• Szövegek kollekciója feletti keresést

támogat• De nem adatbázis!

– Sok minden nem kell amit egy adatbázisszerver elvégez

• Tranzakciók• Adatvesztés• A szöveget (az adatot) nem tároljuk, csak

indexet– Optimalizálás szöveges lekérdezésre, nem

pl. SQL-re

Page 7: Információ Visszakeresés

Egyszerű index• Szó-dokumentum mátrix (Di,j : i. szó

szerepel-e a j-edik dokumentumban)

Antony and Cleopatra Julius Caesar The Tempest Hamlet Othello Macbeth

Antony 1 1 0 0 0 1

Brutus 1 1 0 1 0 0

Caesar 1 1 0 1 1 1

Calpurnia 0 1 0 0 0 0

Cleopatra 1 0 0 0 0 0

mercy 1 0 1 1 1 1

worser 1 0 1 1 1 0

Page 8: Információ Visszakeresés

Egyszerű indexelés• Gyors

• Az élet nem ilyen szép– Kivitelezhetetlen– 1 millió dokumentum, ~1000 token/dok,

~6byte/token• ~6GB korpusz

– Legyen 500K különböző szóalak– 500K x 1M mátrix

• ~60 GB index!

Page 9: Információ Visszakeresés

Invertált index

• A szó-dokumentum mátrixban

~1 milliárd egyes van csak! (azaz rendkívül ritka)

• Egyszerűbb, és jobb reprezentáció, ha csak az 1-esek pozícióit tároljuk– ekkor invertált indexről beszélünk

Page 10: Információ Visszakeresés

Invertált index• Minden T tokenre, tároljuk a T-t

tartalmazó dokumentumok listáját.

• Miben tároljuk?– tömb

Brutus

Calpurnia

Caesar

1 2 3 5 8 13 21 34

2 4 8 16 32 64128

13 16

Mi van akkor ha a Caesar szó bekerül a 14-es dokumentumba?

Page 11: Információ Visszakeresés

Listás megvalósítás jobb• Dinamikus helyfoglalás (különböző

gyakoriságú szavak!!!) • Könnyű beszúrás • Pointerek extra helyfoglalás

Brutus

Calpurnia

Caesar

2 4 8 16 32 64 128

2 3 5 8 13 21 34

13 16

1

Szótár Napló

Dokumentum ID szerint rendezve!

Page 12: Információ Visszakeresés

Invertált index létrehozása

Tokenizáló

Token stream Friends Romans Countrymen

Nyelvi modulok

Normalizált tokenek friend roman countryman

Indexelő

Invertált index

friend

roman

countryman

2 4

2

13 16

1

Dokumentumok Friends, Romans, countrymen.

Page 13: Információ Visszakeresés

Az index használata• Hogyan dolgozunk fel 1 lekérdezést?

– Milyen jellegű lekérdezéseket kezelünk?

• Mit indexelünk?– Mindent, vagy csak fontos szavakat? (Mi

fontos?)

• Stopword lista: a leggyakoribb szavak elhagyhatók az indexből (sok hely, kevés haszon)– pl., the, a, an, of, to …

– Nyelvfüggő elem, minden nyelvre kell stopword lista.

Page 14: Információ Visszakeresés

34

1282 4 8 16 32 64

1 2 3 5 8 13 21

Lekérdezés (naplólisták egyesítése)

• Párhuzamosan megyünk végig a két naplólistán, időigény így arányos a listák összhosszával

128

34

2 4 8 16 32 64

1 2 3 5 8 13 21

Brutus

Caesar2 8

Ha a két lista hossza m és n, az összefésülés időigényeO(m+n)Fontos: a listák dokID szerint rendezve legyenek!!

Page 15: Információ Visszakeresés

Mit kapunk, milyen áron?• Logikai (igen/nem) keresésre

– Csak pontos egyezést ad vissza– Nincs rangsorolás

• Sokáig ez volt az uralkodó technológia

• Becslés a méretre? Vegyük az előző példát:– 1M dokumentum, átl. 1000 token

hossz, átl. 6 byte/szó, ~500K különböző token

Page 16: Információ Visszakeresés

Becslés az invertált index méretére

• Két különálló tényező szabja meg a méretet– Szótár mérete– Naplók mérete

• Különböző dolgok jönnek szóba a méret optimalizálásakor– Szótárnál: pl. szótövezés (magyarban

különösen fontos!)– Naplónál: dokID-ket tárolunk,

tömörítés!

Page 17: Információ Visszakeresés

Napló tárolása• Tároljuk rendezve a dokumentum ID listát!• Ekkor elegendő csak az ID-k különbségeit

tárolni („lyukak”)– ezek várhatóan átlagosan sokkal kisebb számok

– Brutus: 33, 47, 154, 159, 202, …

– Brutus: 33, 14, 107, 5, 43, …

• Használjunk változó kódhosszúságú kódolást!– Calpurnia szó átlag minden egymilliomodik

dokumentumban fordul elő, akkor azt log2 1M = ~20 biten szeretnénk tárolni

– az szó szinte minden dokumentumban benne van, ezt az infot jó lenne ~1 bit helyen tárolni

Page 18: Információ Visszakeresés

γ kódolás• K számot egy <hossz, eltolás> párral írjuk le• hossz érték unáris kódolású

(a számot leíró kód (eltolás) hosszát adja meg)• az eltolás bináris kódolású

(megadja magát a számot)• K kódja

– bites unáris kód – bites bináris kód– ahol:

1log2 K

K2log KKeltolás 2log2

Page 19: Információ Visszakeresés

γ kódolás• Példák:

– 9 = <1110,001> (7 bit)– 23 = <11110, 0111> (9 bit)– 1040 = <11111111110,0000010000> (21 bit)

• A kód egy kettes szorzó mellett optimális!• Ennél számottevően jobb tömörítést csak

úgy érhetünk el, ha rendelkezünk információval a számok eloszlásáról

Page 20: Információ Visszakeresés

Zipf törvénye• A k-adik leggyakoribb szó

gyakorisága nagyságrendileg ~1/k

Page 21: Információ Visszakeresés

Becslés Zipf törvénye alapján

• A leggyakoribb szó N dokumentumban fordul elő (minden lyuk 1-es)2. leggyakoribb N/2 dokumentumban (lyukak átlagosan 2 nagyságúak)…

k-adik leggyakoribb N/k dokumentumban (átlagos lyuk nagyság N/k), bit tárolásra

• Összegezve k = 1 … 500 ezerig• Összegzést végezzük úgy, hogy k darab csoportot tekintünk:

– az i-edik csoportra , elemű, egyenként max .

– N = 1 millió, i = 1 … 19-re szummázva kb 340 millió bit, azaz ~45 MB az index Napló részének mérete.

k2log2

ii k 22 1 12 i

12/2 iNi

Page 22: Információ Visszakeresés

Szótár mérete, első gondolat• Fix hosszú bejegyzések tömbje

– 500K token; 28 byte/token = ~14MB.

Terms Freq. Postings ptr.

a 999,712

aardvark 71

…. ….

zzzz 99

20 bytes 4 bytes each

Page 23: Információ Visszakeresés

A fix méret pazarló!• Angolra:

– Átlagos szóhossz írott szövegben: 4,5 byte

– Átlagos hossza az angol szavaknak: 8 karakter

• Ráadásul a fix méret amúgy is problémás lehet!– „megszentségteleníthetetlenségesked

éseitekért”

Page 24: Információ Visszakeresés

Szótár tömörítése

….systilesyzygeticsyzygialsyzygyszaibelyiteszczecinszomo….

Gyakoiság Napló ptr Szó ptr.

33

29

44

126

Binary searchthese pointers

Teljes hossz =500KB x 8 = 4MB

Pointerek 4Mpozícióra log24M =

22bits = 3bytes

• A szótár egyetlen karakterlánc– Pointer a szó kezdetére

– Köv. pointer mutatja a szó végét

Page 25: Információ Visszakeresés

Index mérete• Napló

– Kb 45 MB

• Szótár– 4 byte gyakoriságra– 4 byte a Napló pointer– 3 byte a szó pointer– Átl. 8 byte szavanként a szóláncban– 500K token ~9.5MB

• Index– ~55 MB

Page 26: Információ Visszakeresés

Indexméret• Szótövezés / kis-nagybetűs alak

– Tokenek számát ~40%-al– Pointerek számát 10-20%-al– Méretet ~30%-al

• Stopwords– 30-as szabály: ~30 szó tesz ki ~30%-ot

az írott szövegekben!– A leggyakoribb szavak kivágása ~25%

helyspórolást hozhat

Page 27: Információ Visszakeresés

Pár szó a lekérdezés sebességéről

• Napló-listák lineáris időben egyesíthetők

• Optimalizálás:– Célszerű a rövid listákkal kezdeni a

műveletek elvégzését – Ugrólisták használata (index mérete

növekszik így)

Page 28: Információ Visszakeresés

Feldolgozás ugrólistákkal

1282 4 8 16 32 64

311 2 3 5 8 17 21318

16 128

Page 29: Információ Visszakeresés

Invertált index vége• Célszerű tárolni a dokumentumban

a szóalak helyét– Kifejezés alapú lekérdezés

támogatására– Ezzel az előbb nem törődtünk– Nagyobb index, de ezt használják a

gyakorlatban• Alternatívája a bi- trigram alapú indexelés

Page 30: Információ Visszakeresés

Rangsorolás• Általában jó sok dokumentum

illeszkedik 1-1 lekérdezésre– Több milliárdos korpuszból milliós

nagyságrendű találat– Fontos, hogy a dokumentumokat

rangsoroljuk, relevancia szerint!

Page 31: Információ Visszakeresés

tf-idf rangsorolás• Szavak súlya a tf, és idf szorzata:

• Index készítésekor legyártható a súlyozás

• „Ezt tároljuk el a szó-dokumentum mátrixban”

• A lekérdezést is egy mini dokumentumra nézve a 2 vektor koszinusza adja a hasonlóságot:

tdtdt dfntfw log,,

n

i ki

n

i ji

n

i kiji

kj

kjkj

ww

ww

dd

ddddsim

1

2,1

2,

1 ,,),(

Page 32: Információ Visszakeresés

PageRank• Ki a legbefolyásosabb ember?

– Az Egyesült Államok elnöke– Az arab liga elnöke– A világbank elnöke– Ha én mind a hármat jól ismerem?

• Egy adott ember fontossága függ az ismerősei befolyásától is!

• Ez a web-gráfra is igaz– A jó lapokra sok (jó) lap mutat rá linkekkel!

Page 33: Információ Visszakeresés

Véletlen szörföző heurisztika• Egy robot véletlen bolyongást

végez a weben– Linkek mentén lép tovább– Beragadást elkerülendő kis eséllyel

(p) véletlen lapra lép tovább– Hosszú idő után az egyes lapok

látogatottsága beáll egy stabil értékre, ami nagyon jól használható a lap fontosáságának mérésére

Page 34: Információ Visszakeresés

Bolyongás• A véletlen bolyongások Markov

láncokkal modellezhetők

• Az egyes állapotok közti átmenetek valószínűségeit sorsztochasztikus mátrixszal írhatjuk le

Page 35: Információ Visszakeresés

Az általunk leírt esetben• Minden állapotból mindegyikbe

vezet él

• Minden lépésben bármely állapotban >0 valószínűséggel lehetünk éppen

• Irredúcibilis Markov lánc– A pontok hosszú távú látogatottsága

egyértelműen definiált– Mindegy honnét indultunk

Page 36: Információ Visszakeresés

PageRank• Az oldalak rangja legyen a hosszú

távú látogatottsági rátájuk!• Ez pontosan a web-gráfot leíró

átmeneti mátrix sajátvektora lesz– Lekérdezésfüggetlen rangsor– Nehéz spammelni

• A rangsorolást visszavezettük a sajátérték-sajátvektor problémára– Kiszámítható!

Page 37: Információ Visszakeresés

PageRank vektor számítása• Legyen a = (a1, … an) a legnagyobb

sajátértékhez tartozó sajátvektor (PageRank)

• Ha az aktuális pozíció a, akkor a következő lépésben aP a helyzetünket leíró vektor

• Ha a az egyensúlyi állapot, akkor a=aP• Megoldva a mátrixegyenletet kapjuk a-t

– Tehát a a P mátrix baloldali sajátvektora– (mely épp a legnagyobb sajátértékhez tartozik)

Page 38: Információ Visszakeresés

Hatványiteráció• Ismert algebrai módszer

– Véletlen vektorból indulva minden iterációban a vektorunkat szorozzuk az átmeneti mátrixszal

– Megállunk ha a vektor már alig változik (stabil)• Bárhonnan indulunk, a bolyongást leíró vektor

a-hoz tart• Tehát induljunk egy egy weblapról (mondjuk

x=(10…0)).• Egy lépés után xP írja le az helyzetünket

(valószínűségek)• Két lépés után xP2 , utána xP3 …• Kellően nagy k-ra, xPk = a.• Algoritmus: szorozzuk x-et a P mátrixszal amíg

a szorzat kellően nem stabilizálódik

Page 39: Információ Visszakeresés

PageRank értékelése

• A lekérdezéstől független a lapok sorrendje

• Nehéz spammelni

• Nagyon sikeresnek bizonyult

• Nem önmagában, hanem sok már heurisztikával karöltve használják

Page 40: Információ Visszakeresés

• Adatbázisuk ~25-30 milliárd indexelt dokumentumot tartalmaz

• A rendszert egyszerű PCk szolgálják ki– Tízezres nagyságrendű géppark– ~5PB RAM– Tárolják az indexelt dokumentumokat (offline

feldolgozás)• Tömörítő (ZIP) algoritmus optimalizálása /sebesség-tömörítési

ráta/

– Biztonság: szándékos redundancia (minden dokumentum 3-6 példányban)

– Saját linux rendszer• Sikerük:

– Testreszabott hardversturktúra– Nagyon jó rangsor

Page 41: Információ Visszakeresés

Google index• További, rangsorolásra használt elemek

– Kiemelt helyen lévő előfordulás (pl. cím, hivatkozó szöveg /anchor-text/, …)

– Query/Hit relevancia (milyen gyakran választják az adott találatot)

– Hubs/authorities (hub – forrás; authority – szakértő)a gráfstruktúrát használja, de másképp mint a PageRank

– Stb.• a kulcs a visszafejthetetlenség• a jó rangsor• optimalizálás

Page 42: Információ Visszakeresés

Hubs-Authorities

AT&T Alice

SprintBob MCI

Hub pontszám h(x) – Attól függ milyen jó szakértőket linkelek

Authority pontszám a(x) – Attól függ mennyi, milyen jó forrás mutat rám

Iteratív módszer

Page 43: Információ Visszakeresés

Anchor text elemzés• A hivatkozó szöveg a linkelt

dologra nézve reprezentatív!

Here is a great picture of a tiger

Cool tiger webpage