Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaMarcell Horváth Megváltozta több, mint 9 éve
1
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. Konzultáció: Szerda 12-14, A/1 336 Elérhetőség: kecskemeti@iit.uni-miskolc.hukecskemeti@iit.uni-miskolc.hu Weboldal: http://www.iit.uni-miskolc.hu/iitweb/opencms/users/kecskemetig
2
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ó
3
Szó-dokumentum előfordulás Ha 1 akkor a darab tartalmazza a szót, egyébként 0
4
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.
5
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.
6
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
7
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
8
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 12358132134 248163264128 1316
9
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 248163264128 2358132134 1316 1 Szótár Előfordulás docID szerint rendezve (részletek később).
10
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
11
Invertált index létrehozása Tokenizáló Token folyam Friends RomansCountrymen Nyelvi modulok Módosított tokenek friend romancountryman Indexelő Invertált index friend roman countryman 24 2 13 16 1 Részletek később. Indexelendő dokumentumok Friends, Romans, countrymen.
12
Párok (Módosított tokenek, dokumentum ID) szekvenciája I did enact Julius Caesar I was killed i' the Capitol; Brutus killed me. Doc 1 So let it be with Caesar. The noble Brutus hath told you Caesar was ambitious Doc 2 Indexelő lépés
13
Szavak szerinti rendezés Fő indexelő lépés
14
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 Miért frekvencia? Hamarosan kiderül
15
Az eredményt szétválasztjuk szótár és előfordulás fájlba
16
Hol fizetünk a tárkapacitásban? Pointerek Szavak A tárhelyigényt később hatá- rozzuk meg
17
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!)
18
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 248163264123581321 Brutus Caesar
19
34 12824816 3264 12 3 581321 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 248163264123581321 Brutus Caesar 2 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
20
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.
21
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és ek; szomszédosság operátorok; inkrementális fejlődés, ellentétben az internetes keresőkkel
22
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 12358132134 248163264128 1316 Keresőkifejezés: Brutus AND Calpurnia AND Caesar
23
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 12358132134 248163264128 1316 Ezért tároljuk a frekvenciát a szótárban Dolgozzuk fel: (Caesar AND Brutus) AND Calpurnia.
24
Á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
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.
26
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
27
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
28
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
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
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.
31
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
32 Zipf-törvénye a gyakorlatban (1) Reuters-21578 korpuszra
33
33 Zipf-törvénye a gyakorlatban (2) Web 2.2 korpuszra ( http://mokk.bme.hu/resources/webcorpus/index_html ) http://mokk.bme.hu/resources/webcorpus/index_html
34
34 Zipf-törvénye n-grammokra
35
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
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
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. - 2log 2 k +1 bit minden ugrás; – ~(2n/k)*log 2 k bit a k-adik leggyakoribb terminus tárigénye.
38
38 Mekkora a V szótár mérete? Lassan nő a korpusz méretével Empirikus modell: V = kN b 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
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. Gyors bináris keresést tesz lehetővé a szótárban 20 byte 4 byte
40
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
41 Terminus listát alkalmazunk A pointereken bináris keresés A gigastring hossza= 500KB x 8 = 4MB 4M-nyi pointert kell tárolni: log 2 4M = 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….
42
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 ablak a l m a induló állapot cél állapot Elemi transzformáció induló szó cél szó Karakter törlés Karakter beszúrás Karakter csere
43
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
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(L 1 *L 2 ). Kimerítő keresést a szótáron nem lehet végezni.
45
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
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.