460 likes | 601 Views
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 .
E N D
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
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ó
Szó-dokumentumelőfordulás Ha 1 akkor a darab tartalmazza a szót, egyébként 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ÉSCalpurnia(komplementer) bitenkéntiAND művelet • 110100 AND 110111 AND 101111 = 100100.
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.
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
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
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
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).
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
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.
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
Szavak szerinti rendezés 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 Miért frekvencia? Hamarosan kiderül
Hol fizetünk a tárkapacitásban? A tárhelyigényt később hatá-rozzuk meg Szavak Pointerek
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!)
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
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
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.
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
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
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.
Á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
(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 • Permutermproblé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,...
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.
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.
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
Zipf-törvénye a gyakorlatban (1) • Reuters-21578 korpuszra
Zipf-törvénye a gyakorlatban (2) • Web 2.2 korpuszra (http://mokk.bme.hu/resources/webcorpus/index_html)
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
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.
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.
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
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
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.
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
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
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
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:
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