Előadó : Kecskeméti Gábor , Ph.D. Elérhetőség : A/1 336. szoba

Post on 23-Feb-2016

45 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Invertált indexek. Indexek hatékonysági kérdései. Közelítő keresési módszerek, szerkesztési távolság. Előadó : Kecskeméti Gábor , Ph.D. Elérhetőség : A/1 336. szoba Gyakorlat : Szerda 8-10, A/1 204 labor Előadás : Szerda 10-12, A/5 202 vegyipari gépek tsz . - PowerPoint PPT Presentation

Transcript

Invertált indexek. Indexek hatékonysági kérdései. Közelítő keresési módszerek, szerkesztési

távolság

Előadó: Kecskeméti Gábor, Ph.D.Elérhetőség: A/1 336. szoba

Gyakorlat: Szerda 8-10, A/1 204 laborElőadás: Szerda 10-12, A/5 202 vegyipari gépek tsz.

Konzultáció: Szerda 12-14, A/1 336Elérhetőség: kecskemeti@iit.uni-miskolc.hu

Weboldal: http://www.iit.uni-miskolc.hu/iitweb/opencms/users/kecskemetig

Keresőkifejezés• Shakespeare mely darabjai tartalmazzák a Brutus

ÉS Caesar szavakat azok közül, amelyek a Calpurnia szót nem tartalmazzák?

• grep-pelhetjük az összes Shakespeare darabot Brutus és Caesar feltétellel és kivághatjuk a Calpurnia-t tartalmazó sorokat.– Nagy korpuszra lassú (korpusz =

dokumentumgyűjtemény)– NOT Calpurnia nem triviális– Más operátorok (pl. Romans ÉS countrymen kifejezés

keresése) nem megoldható

Szó-dokumentum előfordulás

Ha 1 akkor a darab tartalmazza a szót, egyébként 0

Antonius és Kleopátra Julius Caesar A vihar 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

Előfordulásvektorok

• Tehát van egy 0/1 vektor minden szóhoz.• Keresőkifejezés megválaszolása: vegyük a

következő szavak vektorát Brutus, Caesar ÉS Calpurnia (komplementer) bitenkénti AND művelet

• 110100 AND 110111 AND 101111 = 100100.

Válasz a keresőkifejezésre

• Antonius és Kleopátra, III. felvonás, 2. szín• Agrippa [Aside to DOMITIUS ENOBARBUS]: Why, Enobarbus,• When Antony found Julius Caesar dead,• He cried almost to roaring; and he wept• When at Philippi he found Brutus slain.

• Hamlet, III. felvonás, 2. szín• Lord Polonius: I did enact Julius Caesar I was killed i' the• Capitol; Brutus killed me.

Nagyobb korpusz

• Vegyük n = 1M dokumentum, mindegyik kb. 1000 szót tartalmaz

• Átlag 6 bytes/szó, beleszámolva szóközöket és írásjeleket – 6 GB adatot jelent ez korpusz

• Nagyságrendileg m = 500K különböző szó van ezek között

A mátrix nem építhető fel

• 500K x 1M mátrixban fél billió 0 és 1-es van• De nincs benne több, mint 1 milliárd 1-es

– A mátrix nagyon ritka• Hogyan lehetne jobban reprezentálni?

– Csak az 1-eseket tároljuk

Invertált index• Minden T terminus (angolul term: általában szó, de lehet

többszavas kifejezés is) esetén tároljuk az olyan dokumentumok listáját,a melyik tartalmazza T-t

• Tömböt vagy láncolt listát használjunk?

Brutus

Calpurnia

Caesar

1 2 3 5 8 13 21 34

2 4 8 16 32 64 128

13 16

Invertált index

• Általában a láncolt lista jobb a tömbnél– Dinamikus tárfoglalás– Dokumentum beszúrás könnyebb– Tárhelytöbblet a pointerek tárolásával

Brutus

Calpurnia

Caesar

2 4 8 16 32 64 128

2 3 5 8 13 21 34

13 16

1

Szótár ElőfordulásdocID szerint rendezve (részletek később).

Szóindexek hatékonyság javítása • Fix keretű pointer tárolás: rossz helykihasználás

• Változó keretű pointer tárolás: jobb helykihasználás

– Aktuális hossz jelzése:• speciális végjel • hossz megadása

• Változó keretű pointer tárolás: köztes helykihasználás

Invertált index létrehozása

Tokenizáló

Token folyam Friends Romans Countrymen

Nyelvi modulok

Módosított tokenek friend roman countryman

Indexelő

Invertált index

friend

roman

countryman

2 4

2

13 16

1

Részletekkésőbb.

Indexelendő dokumentumok

Friends, Romans, countrymen.

• Párok (Módosított tokenek, dokumentum ID) szekvenciája

I did enact JuliusCaesar I was killed

i' the Capitol; Brutus killed me.

Doc 1

So let it be withCaesar. The noble

Brutus hath told youCaesar was ambitious

Doc 2

Term Doc #I 1did 1enact 1julius 1caesar 1I 1was 1killed 1i' 1the 1capitol 1brutus 1killed 1me 1so 2let 2it 2be 2with 2caesar 2the 2noble 2brutus 2hath 2told 2you 2caesar 2was 2ambitious 2

Indexelő lépés

• Szavak szerinti rendezés Term Doc #ambitious 2be 2brutus 1brutus 2capitol 1caesar 1caesar 2caesar 2did 1enact 1hath 1I 1I 1i' 1it 2julius 1killed 1killed 1let 2me 1noble 2so 2the 1the 2told 2you 2was 1was 2with 2

Term Doc #I 1did 1enact 1julius 1caesar 1I 1was 1killed 1i' 1the 1capitol 1brutus 1killed 1me 1so 2let 2it 2be 2with 2caesar 2the 2noble 2brutus 2hath 2told 2you 2caesar 2was 2ambitious 2

Fő indexelő lépés

• A többszörös, egy dokumentumon belüli szóelőfordulásokat egyesítjük

• Frekvencia (avagy gyakoriság) érték hozzá adódik

Term Doc # Freqambitious 2 1be 2 1brutus 1 1brutus 2 1capitol 1 1caesar 1 1caesar 2 2did 1 1enact 1 1hath 2 1I 1 2i' 1 1it 2 1julius 1 1killed 1 2let 2 1me 1 1noble 2 1so 2 1the 1 1the 2 1told 2 1you 2 1was 1 1was 2 1with 2 1

Term Doc #ambitious 2be 2brutus 1brutus 2capitol 1caesar 1caesar 2caesar 2did 1enact 1hath 1I 1I 1i' 1it 2julius 1killed 1killed 1let 2me 1noble 2so 2the 1the 2told 2you 2was 1was 2with 2

Miért frekvencia?Hamarosan kiderül

• Az eredményt szétválasztjuk szótár és előfordulás fájlba

Doc # Freq2 12 11 12 11 11 12 21 11 12 11 21 12 11 11 22 11 12 12 11 12 12 12 11 12 12 1

Term N docs Tot Freqambitious 1 1be 1 1brutus 2 2capitol 1 1caesar 2 3did 1 1enact 1 1hath 1 1I 1 2i' 1 1it 1 1julius 1 1killed 1 2let 1 1me 1 1noble 1 1so 1 1the 2 2told 1 1you 1 1was 2 2with 1 1

Term Doc # Freqambitious 2 1be 2 1brutus 1 1brutus 2 1capitol 1 1caesar 1 1caesar 2 2did 1 1enact 1 1hath 2 1I 1 2i' 1 1it 2 1julius 1 1killed 1 2let 2 1me 1 1noble 2 1so 2 1the 1 1the 2 1told 2 1you 2 1was 1 1was 2 1with 2 1

• Hol fizetünk a tárkapacitásban? Doc # Freq

2 12 11 12 11 11 12 21 11 12 11 21 12 11 11 22 11 12 12 11 12 12 12 11 12 12 1

Term N docs Tot Freqambitious 1 1be 1 1brutus 2 2capitol 1 1caesar 2 3did 1 1enact 1 1hath 1 1I 1 2i' 1 1it 1 1julius 1 1killed 1 2let 1 1me 1 1noble 1 1so 1 1the 2 2told 1 1you 1 1was 2 2with 1 1

Pointerek

Szavak

A tárhelyigényt később hatá-rozzuk meg

Felépítettük az indexeket

• Hogyan dolgozzuk fel a keresőkifejezést?– Milyen keresőkifejezéseket tudunk feldolgozni?

• A dokumentum mely szavait indexeljük?– Az összeset, vagy csak a fontosakat?

• Stopszólista: olyan gyakori szavak, melyeket kihagyunk az indexelésből– pl. angol esetén the, a, an, of, to …– Általában: kötőszavak, határozók, névelők, stb.– Nyelvspecifikus (építsünk magyar stopszó-listát!)

Keresőkifejezés feldolgozása

• Dolgozzuk fel a következő keresőkifejezést:Brutus ÉS Caesar– Megkeressük Brutus-t a szótárban;

• Visszakeressük az előfordulásait– Megkeressük Caesar-t a szótárban;

• Visszakeressük az előfordulásait– “Összefűzzük” a két előfordulás listát

128

34

2 4 8 16 32 64

1 2 3 5 8 13 21

Brutus

Caesar

34

1282 4 8 16 32 64

1 2 3 5 8 13 21

Az összefűzés

• Sétáljuk végig a két előfordulás láncon párhuzamosan, a szükséges idő arányos az összes előfordulások számával

128

34

2 4 8 16 32 64

1 2 3 5 8 13 21

Brutus

Caesar2 8

Ha hosszúságok m és n, az összefűzés O(m+n) műveletből áll.Kritikus: Az előfordulások docID szerint vannak rendezve

Boole-keresés: Pontos egyezés

• AND-et, OR-t és NOT-ot használó keresések keresőkifejezésekkel– Minden dokumentumot szavak halmazának tekint– Precíz: a dokumentum vagy megfelel, vagy nem

• Elsődleges üzleti keresési eszköz 4 évtizede• Professzionális keresők (pl. Lawyers) Még

mindig a Boole-keresést részesítik előnyben:– Pontosan tudod mit kapsz.

Példa: WestLaw http://www.westlaw.com/

• Legnagyobb üzleti (fizető felhasználós) jogi keresőrendszer (1975 indulás; 1992 rangsorolás hozzáadása)

• Kb. 7 TB adat; 700.000 felhasználó• A legtöbb felhasználó még mindig Boole-keresést végez• Példa keresőkifejezésre:

– What is the statute of limitations in cases involving the federal tort claims act?

– LIMIT! /3 STATUTE ACTION /S FEDERAL /2 TORT /3 CLAIM

• Hosszú, precíz keresőkifejezések; szomszédosság operátorok; inkrementális fejlődés, ellentétben az internetes keresőkkel

Keresőkifejezések optimalizálása

• Mi a legjobb sorrend a keresőkifejezés feldolgozására?

• Vegyünk a szavak ÉS-eléséből álló kifejezést• Vegyük minden T szó előfordulását és ÉS-

eljük együtt:Brutus

Calpurnia

Caesar

1 2 3 5 8 13 21 34

2 4 8 16 32 64 128

13 16

Keresőkifejezés: Brutus AND Calpurnia AND Caesar

Optimalizálás, példa• Dolgozzuk fel a frekvencia szerinti növekvő

sorrendben– Kezdjünk a legkisebb halmazzal, és folyamatosan

rövidül a művelet egyik tagja

Brutus

Calpurnia

Caesar

1 2 3 5 8 13 21 34

2 4 8 16 32 64 128

13 16

Ezért tároljuk a frekvenciát a szótárban

Dolgozzuk fel: (Caesar AND Brutus) AND Calpurnia.

Általánosabb optimalizáció

• Pl. (madding OR crowd) AND (ignoble OR strife)• Vegyük az összes szó gyakoriságát (freq)• Becsüljük meg az összes OR méretét a

gyakoriságok összegével• Dolgozzuk fel az OR mérete szerint növekvő

sorrendben

25

(Karakter) N-grammok

• Definíció: N egymás utáni karakterből álló része egy hosszabb karakterláncok (sztring)

• Példa: TEXT⊔ ⊔– Bigrammok: T, TE, EX, XT, T⊔ ⊔– Trigrammok: TE, TEX, EXT, XT , T ⊔ ⊔ ⊔⊔– 4-grammok: TEX, TEXT, EXT , XT , T ,⊔ ⊔ ⊔⊔ ⊔⊔⊔

• Általánosan: k (k≥3) hosszú stringnek k+1 bi-, tri, és 4-grammja van.

Keresés

• A *-keresések kezelése. • Ha a * a szó végén van, visszavezethető a B+-fára

– w = alma* – alma ≤ w < almb

• A fenti megoldás problémája:– nem kezeli a szó eleji csillagjelet – nagy költség, ha a kicsi a prefix rész O(N)

• w = al*ma*

• Célszerű lenne olyan index, amely a figyelembe tudja venni az összes megadott szóelemet

Permuterm Index

• Egy szónál az összes lehetséges kezdetet figyelembe veszi, bárhol lehet a csillag a szón belül.

• Egy szóhoz több bejegyzés készül – alma: alma$ lma$a ma$al a$alm a$lma

• Keresés igazítása a permuterm indexhez: • w = al*ma• w = ma$al*

– A csillag továbbra is a keresett minta végére kerül• Permuterm probléma: ≈ sokszoros lexikon- méret

Bigram index• A több szóból álló kifejezések esetén nagy halmazok metszetét

kell venni Költséges a tényleges illeszkedés ellenőrzése • Bigram index: karakter párokhoz az illeszkedő szavak

hozzárendelés Lépések • Szöveg felbontása bigramokra

– Fa alatt a kosár– fa, a$, $a, al, la, at, tt, t$, $a, a$, $k, ko

• A bigramok szavakhoz rendelése – fa

• fa, fazék,falap,... – a$

• fa, kapa,haza,...

29

n-gram wildcard feldolgozása

• mon* keresés futtatható– $m AND mo AND on

• Gyors, tárhatékony.• De visszaadja moon-t is.• Szükséges egy utólagos szűrés is a keresésben.

30

Zipf törvénye

• Az n-edik leggyakoribb szó egy természetes nyelvű szövegben n-nel fordítottan arányos gyakorisággal fordul elő.

• Az átmenet a ritka és gyakori szavak között folytonos

• Ugyanez a törvényszerűség fennáll N-grammokra is.

Zipf tötvénye folytatás

• Az emberi viselkedés (beleértve a nyelvet) egyik irányelve a befektetett összmunka minimalizálása

• A tétel következmény a természetes nyelvi elemekre (szavakra):

– f = egy szó gyakorisága a nyelvben– r = egy szó pozíciója a gyakoriság szerinti sorrendben – k = konstans

• Elvek: – a beszélő minél kevesebb fogalmat kíván használni– a hallgató minél színesebb, egyértelműbb leírást szeretne

32

Zipf-törvénye a gyakorlatban (1)

• Reuters-21578 korpuszra

33

Zipf-törvénye a gyakorlatban (2)

• Web 2.2 korpuszra (http://mokk.bme.hu/resources/webcorpus/index_html)

34

Zipf-törvénye n-grammokra

Zipf törvénye és a szavak egyértelműsége

• A gyakoriság mellett a jelentések egyértelműségére is létezik egy gyakorlati megfigyelés:

– m = egy szó jelentéseinek száma a nyelvben– r = egy szó pozíciója a gyakoriság szerinti sorrendben– k = konstans

• 30-as szabály: az első 30 gyakori szó lefedi a szóelőfordulások 30%-át

36

Zipf törvénye

• A k-dik leggyakoribb terminus gyakoriság- részesedése 1/k.

• Használjuk ezt a jelölő fájlunk pointerei által elfoglalt hely egy nyer analíziséhez.– Még nem vagyunk készen a szótár helyigényének a

analízisére.

37

Durva analízis Zipf alapján• A leggyakoribb terminus n dokumentumban

szerepel– n ugrás, mindegyik doc

• A második leggyakoribb terminus n/2 dokumentumban– n/2 ugrás, minden 2. doc …

• K-adik leggyakoribb terminus n/k dokumentumban– n/k ugrás, minden k. doc. - 2log2k +1 bit minden ugrás;– ~(2n/k)*log2k bit a k-adik leggyakoribb terminus

tárigénye.

38

Mekkora a V szótár mérete?• Lassan nő a korpusz méretével• Empirikus modell:

V = kNb

• ahol b ≈ 0.5, k ≈ 30–100; N = # token• Például TREC 1 és 2 CD-k (2 Gb; 750,000 híranyag): ~ 500,000

terminus• V csökkenthető a kisbetűs átalakítással, szótövezéssel• Ha minden számot indexelünk, az nagyon megnövelheti a szótár

méretét (ezért nem tesszük*)• Helyesírási hibák és elírások is jelentékenyen növelhetik a méretét

39

Szótár tárolása – első megközelítés

• Fix szélességű elemek tömbje– 500,000 terminus; 28 bytes/term = 14MB.

Terms Freq. Postings ptr.

a 999,712

aardvark 71

…. ….

zzzz 99

Gyors bináris keresést tesz lehetővé a szótárban

20 byte4 byte

40

A fix terminushossz pazarlás

• A tár nagy részét nem használjuk ki, hiszen a legtöbb terminus nincs 20 byte (akár 1 betűs szavakra is ennyit pazarolhatunk)– És még mindig nem lehet a „megszentségteleníthetetlenségeitekért”

szót letárolni

• Írott angol átlagosan ~4.5 karakter– Feladat: jó ez az érték arra, hogy a szótár méretét

becsüljük vele?– A tokenekben a rövid szavak dominálnak Átlagos

angol szóhossz: ~8 karakter.

41

Terminus listát alkalmazunk

Freq. Postings ptr. Term ptr.

33

29

44

126

A pointereken bináris keresés

A gigastring hossza=500KB x 8 = 4MB

4M-nyi pointert kell tárolni: log24M =

22bits = 3bytes

Tároljuk a szótárat egy hosszú stringként: A következő szóra mutató pointer mutatja az aktuális szó végét Ezen mintegy 60%-ot nyerünk

….7systile9syzygetic8syzygial6syzygy11szaibelyite8szczecin9szomo….

Szerkesztési távolság• A szerkesztési lépéseket és sorrendjét egy

transzformációs mátrixon keresztül határozzuk meg

• Elemi transzformációk

a b l a kalma

induló állapot

cél állapot

Elemi transzformáció

induló szó

cél szó

Karakter törlés

Karakter beszúrás

Karakter csere

Szerkesztési távolság• Szerkesztések költsége

• Törlés: 1; Beszúrás: 1; Csere, ha azonos : 0; Csere, ha különböző: 1.

• Induló állapot költsége: 0 • Adott (i,j) ponthoz meghatározzuk a (i+1,j) (i,j+1),

(i+1,j+1) pontok költségeit • Egy adott pont költsége az odavezető elemi átalakítások

eredményeként kapott költségek minimuma lesz • Az optimum értéket adó útvonal adja keresett távolság

értéket

44

Szerkesztési távolság

• gyors vs. gyros: két csere, dist = 2.• Különböző hosszú stringekre is működik• Egy stringre O(L1*L2). Kimerítő keresést a

szótáron nem lehet végezni.

N-Gram távolság• Minden szót az n-gramok halmazának tekintjük

• alma• {$a,al, lm, a$}

– Két szó távolsága a két halmaz Jaccard mértéke:

• Minden szót az n-gramok vektorának tekintjük• alma• (1,0,0,...,1,..0,1) • 1, ahol tartalmazott az n-gram, különben 0

– Két szó távolsága a két vektor által bezát szög koszinusza:

46

Soundex

• Olyan heurisztikák gyűjteménye, amelyek kibővítik a keresést kiejtés szerinti írásmódokkal:– Nyelvspecifikus– Pl. chebyshev tchebycheff

• Hogyan használjuk a tezauruszt/soundexet?– “kibővíthetjük” a keresőkifejezést az ekvivalensekkel:

• Keresés: car tyres car tyres automobile tires– Lehetséges az indexeléskori bővítés is

• Ha az indexelt dok tartalmazza kutyá-t, indexeljük az eb alatt is

top related