1 / 46

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

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 .

jonny
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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étiGá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 vegyiparigépektsz. Konzultáció: Szerda 12-14, A/1 336 Elérhetőség: kecskemeti@iit.uni-miskolc.hu Weboldal: http://www.iit.uni-miskolc.hu/iitweb/opencms/users/kecskemetig

  2. Keresőkifejezés • Shakespeare mely darabjai tartalmazzák aBrutusÉSCaesar szavakat azok közül, amelyek aCalpurnia szót nem tartalmazzák? • grep-pelhetjük az összes Shakespeare darabotBrutusés Caesarfeltétellel és kivághatjuk a Calpurnia-t tartalmazó sorokat. • Nagy korpuszra lassú (korpusz = dokumentumgyűjtemény) • NOTCalpurnianem triviális • Más operátorok (pl.Romans ÉS countrymenkifejezés keresése) nem megoldható

  3. Szó-dokumentumelő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ÉSCalpurnia(komplementer) bitenkéntiAND művelet • 110100 AND 110111 AND 101111 = 100100.

  5. Válasz a keresőkifejezésre • AntoniusésKleopá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ükn = 1M dokumentum, mindegyik kb. 1000 szót tartalmaz • Átlag 6 bytes/szó,beleszámolva szóközöket és írásjeleket • 6GB adatot jelent ez korpusz • Nagyságrendilegm = 500K különbözőszó van ezek között

  7. A mátrix nem építhető fel • 500K x 1M mátrixbanfé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. 2 4 8 16 32 64 128 1 2 3 5 8 13 21 34 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 13 16

  9. Brutus Calpurnia Caesar Szótár Előfordulás 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 2 4 8 16 32 64 128 1 2 3 5 8 13 21 34 13 16 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. Tokenizáló Friends Romans Countrymen Token folyam Részletek később. Nyelvi modulok friend friend roman countryman Módosított tokenek roman Indexelő 2 4 countryman 1 2 Invertált index 16 13 Invertált index létrehozása Indexelendő dokumentumok Friends, Romans, countrymen.

  12. Indexelő lépés • Párok (Módosított tokenek, dokumentum ID) szekvenciája Doc 1 Doc 2 I did enact Julius Caesar I was killed i' the Capitol; Brutus killed me. So let it be with Caesar. The noble Brutus hath told you Caesar was ambitious

  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? A tárhelyigényt később hatá-rozzuk meg Szavak Pointerek

  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. 2 4 8 16 32 64 1 2 3 5 8 13 21 Keresőkifejezés feldolgozása • Dolgozzuk fel a következő keresőkifejezést: BrutusÉSCaesar • MegkeressükBrutus-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 Brutus Caesar 34

  19. Brutus Caesar 13 128 2 2 4 4 8 8 16 16 32 32 64 64 8 1 1 2 2 3 3 5 5 8 8 21 21 13 34 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 2 34 Ha hosszúságokmésn, 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ésNOT-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 TBadat; 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

  22. 2 4 8 16 32 64 128 1 2 3 5 8 13 21 34 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 13 16 Keresőkifejezés: BrutusANDCalpurniaANDCaesar

  23. Brutus 2 4 8 16 32 64 128 Calpurnia 1 2 3 5 8 13 21 34 Caesar 13 16 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 Ezért tároljuk a frekvenciát a szótárban Dolgozzuk fel: (CaesarANDBrutus)ANDCalpurnia.

  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. (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 • Permutermproblé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. 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.

  31. Zipftötvényefolytatá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

  35. Zipftörvényeés a szavakegyé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 • nugrás,mindegyik doc • A második leggyakoribb terminus n/2dokumentumban • n/2ugrá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. 20 byte Gyors bináris keresést tesz lehetővé a szótárban 4 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 • 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…. A gigastring hossza= 500KB x 8 = 4MB 4M-nyi pointert kell tárolni: log24M = 22bits = 3bytes A pointereken bináris keresés

  42. Szerkesztésitá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 célszó indulóállapot Elemi transzformáció indulószó célállapot Karakterbeszúrás Karaktertörlés Karaktercsere

  43. Szerkesztésitá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.

  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. 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 tyresautomobile tires • Lehetséges az indexeléskori bővítés is • Ha az indexelt doktartalmazzakutyá-t, indexeljük az eb alatt is

More Related