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.

Slides:



Advertisements
Hasonló előadás
Hogyan jutunk információkhoz az interneten
Advertisements

Keresés a számítógépes katalógusokban
Koordináták, függvények
Nevezetes algoritmusok
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
Hirdetésfeladás, vásárlás az interneten, aukciós oldalak.
Internet ismeretek II..
Gábor Dénes Főiskola Informatikai Rendszerek Intézete Informatikai Alkalmazások Tanszék Infokommunikáció Beszédjelek Házman DIGITÁLIS BESZÉDJEL ÁTVITEL.
ADATBÁZIS KEZELÉS – Adattípusok
Műveletek logaritmussal
Koordináta transzformációk
Matematika II. 3. előadás Geodézia szakmérnöki szak 2010/2011. tanév Műszaki térinformatika ágazat tavaszi félév.
Hatékony gyorsítótár használata legrövidebb utak kereséséhez Bodnár István, Fodor Krisztián, Gyimesi Gábor Jeppe Rishede Thomsen, Man Lung Yiu, Christian.
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
Sztringek.
Bevezetés a Java programozásba
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Információ Visszakeresés
A számítógépes nyelvfeldolgozás alapjai
GOOGLE 1998 szeptember Ma: az IN-es keresés 75%-a Webes keresés Képkeresés Usenet csoportokban Könyvtárban (hierarchikus katalógus) Egyéb szolgáltatások.
Programozás II. 3. Gyakorlat C++ alapok.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Műszaki ábrázolás alapjai
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
T.Gy. Beszedfelism es szint Beszédfelismerés és beszédszintézis Beszédjelek lineáris predikciója Takács György 4. előadás
A digitális számítás elmélete
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Kereső programok használata
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
Microsoft Excel Függvények VII..
Lineáris egyenletrendszerek (Az evolúciótól a megoldáshalmaz szerkezetéig) dr. Szalkai István Pannon Egyetem, Veszprém /' /
szakmérnök hallgatók számára
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
Összetett adattípusok a Pascal nyelvben
Karakterláncok Páll Boglárka. Karakterláncok Karakterlánc olyan karakterek sorozata amelyek az ASCII táblázatban találhatók. Maximális hossza rögzített,
Lénárt Szabolcs Páll Boglárka
Adatszerkezetek 1. előadás
Szemantikus keresők.
Az internetes keresőkben a felhasználó az őt érdeklő szavakra, adatokra kereshet rá egy általában egyszerű oldalon, egy beviteli mező és egyéb szűrési.
Az adatállományokat, programfile-kat logikailag csoportosítva tároljuk: mappákban (könyvtárakban). Egy mappa tartalmazhat további mappákat, és így tovább,
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Alapsokaság (populáció)
Atomi mondatok FOL-ban Atomi mondat általában: amiben egy vagy több dolgot megnevezünk, és ezekről állítunk valamit. Pl: „Jóska átadta a pikk dámát Pistának”
Visual Basic 2008 Express Edition
1 Adatbiztonság és tartalom alapú információkezelés 2. előadás.
Adatbázisok tervezése, megvalósítása és menedzselése
Nicsak, ki beszél – már a számítógépek is... Szita István Eötvös Collegium.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
A Visual Basic nyelvi elemei
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
Kördokumentumok 1..
Az internetes keresési módszerek
Gazdasági informatikus - Szövegszerkesztés 1 Hosszú dokumentumok kezelése.
Keresés a weben Kulcsszavas keresés: Google (
Gráfok ábrázolása teljesen láncoltan
Hibajavító kódok.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 3.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
1.  Szerzői:  Panagiotis Bouros (University of Hong Kong),  Shen Ge (University of Hong Kong),  Nikos Mamoulis (University of Hong Kong)  Esemény:
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Készítette: Kiss András
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Cache példák 2019 (IMSC).
Szövegfeldolgozás II. INFOÉRA perc kell még hozzá
Előadás másolata:

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/ 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: Weboldal:

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

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 AND AND =

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 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

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 Szótár Előfordulás 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

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 Részletek később. Indexelendő dokumentumok Friends, Romans, countrymen.

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

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

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

Hol fizetünk a tárkapacitásban? 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 Brutus Caesar

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 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

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 Legnagyobb üzleti (fizető felhasználós) jogi keresőrendszer (1975 indulás; 1992 rangsorolás hozzáadása) Kb. 7 TB adat; 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

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 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 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 korpuszra

33 Zipf-törvénye a gyakorlatban (2) Web 2.2 korpuszra ( )

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. - 2log 2 k +1 bit minden ugrás; – ~(2n/k)*log 2 k 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 = 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 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 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 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….

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

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(L 1 *L 2 ). 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