Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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.

Hasonló előadás


Az előadások a következő témára: "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."— Előadás másolata:

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


Letölteni ppt "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."

Hasonló előadás


Google Hirdetések