Szövegbányászat Információ Visszakeresés és egyéb alkalmazások

Hasonló dokumentumok
Szövegbányászat és dokumentum kezelés

Szövegbányászat és dokumentum kezelés

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Szövegbányászati rendszer fejlesztése a Magyar Elektronikus Könyvtár számára

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Tudásalapú információ-kereső rendszerek elemzése és kifejlesztése

2. Fejezet : Számrendszerek

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Informatikai Rendszerek Alapjai

Bináris egység: bit (binary unit) bit ~ b; byte ~ B (Gb Gigabit;GB Gigabyte) Gb;GB;Gib;GiB mind más. Elnevezés Jele Értéke Elnevezés Jele Értéke

Digitális jelfeldolgozás

The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003

C programozási nyelv Pointerek, tömbök, pointer aritmetika

Programozás alapjai. 10. előadás

Bevezetés a programozásba I.

Tartalomjegyzék. Köszönetnyilvánítás. 1. Az alapok 1

Struktúra nélküli adatszerkezetek

4. Fejezet : Az egész számok (integer) ábrázolása

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

Hash-alapú keresések

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Programozás alapjai II. (7. ea) C++

emberi kivonatolás Lengyelné dr. Molnár Tünde

Adaptív dinamikus szegmentálás idősorok indexeléséhez

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Egyszerű programozási tételek

A C programozási nyelv III. Pointerek és tömbök.

Adatszerkezetek Bevezetés Adatszerkezet Adatszerkezet típusok Műveletek Bonyolultság

Programozási segédlet

A C programozási nyelv III. Pointerek és tömbök.

JAVASLAT A TOP-K ELEMCSERÉK KERESÉSÉRE NAGY ONLINE KÖZÖSSÉGEKBEN

1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.

Számítógépes döntéstámogatás. Genetikus algoritmusok

Analóg és digitális jelek. Az adattárolás mértékegységei. Bit. Bájt. Nagy mennyiségû adatok mérése

Webes keres rendszerek. Webtechnológiák. Webes keres rendszerek. Webes keres rendszerek. Répási Tibor egyetemi tanársegéd

Adatszerkezetek 1. előadás

Algoritmuselmélet 7. előadás

Robotika. Kinematika. Magyar Attila

Programozás alapjai. 5. előadás

KERESÉS A NETEN DR. KÓNYA LÁSZLÓ: KERESÉS A NETEN KERESÉS MÓDSZERE, KERESŐPROGRAMOK

Komputeralgebrai Algoritmusok

Statisztika - bevezetés Méréselmélet PE MIK MI_BSc VI_BSc 1

Láncolt listák Témakörök. Lista alapfogalmak

SZTE Eötvös Loránd Kollégium. 2. Móra György: Információkinyerés természetes nyelvű szövegekből

Aritmetikai utasítások I.

Érdekes informatika feladatok

Az adatbázisrendszerek világa

Genetikus algoritmusok

Bevezetés a programozásba. 5. Előadás: Tömbök

Multimédiás adatbázisok

Szegmentálás. Memória kezelési stratégia mely a felhasználó nézőpontját támogatja Például:

Felvételi tematika INFORMATIKA

Történet John Little (1970) (Management Science cikk)

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Mutatók és mutató-aritmetika C-ben március 19.

Számítógép felépítése

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

Teljesítménymodellezés

PONTFELHŐ REGISZTRÁCIÓ

Algoritmusok és adatszerkezetek I. 1. előadás

ÉRETTSÉGI TÉTELCÍMEK 2018 Informatika

Alkalmazásokban. Dezsényi Csaba Ovitas Magyarország kft.

Hatékonyság 1. előadás

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

22. GRÁFOK ÁBRÁZOLÁSA

Beszédfelismerés alapú megoldások. AITIA International Zrt. Fegyó Tibor

5. A kiterjesztési elv, nyelvi változók

Bevezetés a számítástechnikába

17. A 2-3 fák és B-fák. 2-3 fák

ADFOCS Corpus size for estimates

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Az Informatika Elméleti Alapjai

Informatikai Rendszerek Alapjai

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Többfelhasználós és internetes térkép kezelés, megjelenítés

Kereső algoritmusok a diszkrét optimalizálás problémájához

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Gépi tanulás a gyakorlatban. Bevezetés

Alhálózatok. Bevezetés. IP protokoll. IP címek. IP címre egy gyakorlati példa. Rétegek kommunikáció a hálózatban

Bevezetés az informatikába Tételsor és minta zárthelyi dolgozat 2014/2015 I. félév

Mit látnak a robotok? Bányai Mihály Matemorfózis, 2017.

Képrekonstrukció 9. előadás

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Kézikönyv. Kalkuláció alapjai

GPU Lab. 14. fejezet. OpenCL textúra használat. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

Számítógépes döntéstámogatás. Döntések fuzzy környezetben Közelítő következtetések

Nyilvántartási Rendszer

Algoritmuselmélet 6. előadás

Dr. Illés Zoltán

Kereső algoritmusok a diszkrét optimalizálás problémájához

Objektumorientált Programozás VI.

ELEMI PROGRAMOZÁSI TÉTELEK

1. tétel. A kommunikáció információelméleti modellje. Analóg és digitális mennyiségek. Az információ fogalma, egységei. Informatika érettségi (diák)

1. tétel. 1. Egy derékszögű háromszög egyik szöge 50, a szög melletti befogója 7 cm. Mekkora a háromszög átfogója? (4 pont)

Átírás:

Szövegbányászat Információ Visszakeresés és egyéb alkalmazások A diák nagyban támaszkodnak a Stanford Egyetem Information Retrieval and Web-mining kurzusának anyagára: http://www-csli.stanford.edu/~schuetze/information-retrieval-book.html

Áttekintés Mi az IR? Indexelés Egyszerű index Invertált index, Gamma-kódolás Rangsorolás TF-IDF rangsor PageRank Egyéb alkalmazások és feladatok

Információ Visszakeresés IR alapprobléma Adott egy korpusz (dokumentumok halmaza, internet) Felhasználó az információigényét leginkább kielégítő dokumentumokat keresi Lekérdezést fogalmaz meg Cél a lekérdezésnek megfelelő dokumentumok listájának visszaadása

Egy IR rendszer legfontosabb jellemzői Indexelés sebessége Kevésbé fontos Lekérdezés sebessége Kritikus szempont Lekérdező nyelv kifejezőereje Mi kérdezhető meg és mi nem? Pontosság A legfontosabb, de mérése összetett feladat

Egy keresőmotor sémája

Egyszerű index Szó-dokumentum mátrix (D i,j : i. szó szerepel-e a j. dokumentumban) Antony and Cleopatra Julius Caesar The Tempest Hamlet Othello Macbeth Antony 1 1 0 0 0 1 Brutus 1 1 0 1 0 0 Caesar 1 1 0 1 1 1 Calpurnia 0 1 0 0 0 0 Cleopatra 1 0 0 0 0 0 mercy 1 0 1 1 1 1 worser 1 0 1 1 1 0

Gyors Egyszerű indexelés Az élet nem ilyen szép Kivitelezhetetlen 1 millió dokumentum, ~1000 token/dok, ~6byte/token ~6GB korpusz Legyen 500K különböző szóalak 500K x 1M mátrix ~60 GB index!

Invertált index ~1 milliárd egyest tartalmaz csupán a szó-dokumentum mátrix Rendkívül ritka Egyszerűbb, és jobb reprezentáció, ha csak az 1-esek pozícióit tároljuk ekkor invertált indexről beszélünk

Invertált index Minden T tokenre, tároljuk a T-t tartalmazó dokumentumok listáját. Miben tároljuk? Tömb? Brutus Calpurnia Caesar 2 4 8 16 32 64 128 1 2 3 5 8 13 21 34 13 16 Mi van akkor ha a Caesar szó bekerül a 14-es dokumentumba?

Listás megvalósítás jobb Dinamikus helyfoglalás (különböző gyakoriságú szavak!!!) Könnyű beszúrás Pointerek extra helyfoglalás Brutus Calpurnia Caesar 2 4 8 16 32 64 128 1 2 3 5 8 13 21 34 13 16 Szótár Napló Dokumentum ID szerint rendezve!

Invertált index létrehozása Dokumentumok Friends, Romans, countrymen. Tokenizáló Token stream Friends Romans Countrymen Nyelvi modulok Normalizált tokenek friend roman countryman Invertált index Indexelő friend roman countryman 2 4 1 2 13 16

Az index használata Hogyan dolgozunk fel 1 lekérdezést? Milyen jellegű lekérdezéseket kezelünk? Mit indexelünk? Mindent, vagy csak fontos szavakat? (Mi fontos?) Stopword lista: a leggyakoribb szavak elhagyhatók az indexből (sok hely, kevés haszon) pl., the, a, an, of, to Nyelvfüggő elem, minden nyelvre kell stopword lista.

Lekérdezés (naplólisták egyesítése) Párhuzamosan megyünk végig a két naplólistán, időigény így arányos a listák összhosszával 2 8 2 4 8 16 32 64 128 1 2 3 5 8 13 21 34 Brutus Caesar Ha a két lista hossza m és n, az összefésülés időigénye O(m+n) Fontos: a listák dokid szerint rendezve legyenek!!

Mit kapunk, milyen áron? Logikai (igen/nem) keresésre Csak pontos egyezést ad vissza Nincs rangsorolás Sokáig ez volt az uralkodó technológia Becslés a méretre? Vegyük az előző példát: 1M dokumentum, átl. 1000 token hossz, átlalában 6 byte/szó, ~500K különböző token

Becslés az invertált index méretére Két különálló tényező szabja meg a méretet Szótár mérete Naplók mérete Különböző dolgok jönnek szóba a méret optimalizálásakor Szótárnál: pl. szótövezés (magyarban különösen fontos!) Naplónál: dokid-ket tárolunk, tömörítés!

Napló tárolása Tároljuk rendezve a dokumentum ID listát! Ekkor elegendő csak az ID-k különbségeit tárolni ( lyukak ) ezek várhatóan átlagosan sokkal kisebb számok Brutus: 33, 47, 154, 159, 202, Brutus: 33, 14, 107, 5, 43, Használjunk változó kódhosszúságú kódolást! Calpurnia szó átlag minden egymilliomodik dokumentumban fordul elő, akkor azt log 2 1M = ~20 biten szeretnénk tárolni Az az szó szinte minden dokumentumban benne van, ezt az infot jó lenne ~1 bit helyen tárolni

γ kódolás K számot egy <hossz, eltolás> párral írjuk le hossz érték unáris kódolású (a számot leíró kód (eltolás) hosszát adja meg) az eltolás bináris kódolású (megadja magát a számot) K kódja 1 log 2 K + bites unáris kód log 2 K bites bináris kód log2 K ahol: eltolás = K 2

γ kódolás Példák: 9 = <1110,001> (7 bit) 23 = <11110, 0111> (9 bit) 1040 = <11111111110,0000010000> (21 bit) Ennél számottevően jobb tömörítést csak úgy érhetünk el, ha rendelkezünk információval a számok eloszlásáról V.ö. Huffman-kód

Zipf törvénye A k-adik leggyakoribb szó gyakorisága nagyságrendileg ~1/k

Becslés Zipf törvénye alapján A leggyakoribb szó N dokumentumban fordul elő (minden lyuk 1-es) 2. leggyakoribb N/2 dokumentumban (lyukak átlagosan 2 nagyságúak) k-adik leggyakoribb N/k dokumentumban (átlagos lyuk nagyság N/k), 2log 2 k bit tárolásra Összegezve k = 1 500 ezerig Összegzést végezzük úgy, hogy k darab csoportot tekintünk: i i az i-edik csoportra 2 1 1 k < 2, 2 i elemű, egyenként max i 1. 2Ni / 2 N = 1 millió, i = 1 19-re szummázva kb 340 millió bit, azaz ~45 MB az index Napló részének mérete.

Szótár mérete, első gondolat Fix hosszú bejegyzések tömbje 500K token; 28 byte/token = ~14MB. Terms Freq. Postings ptr. a 999,712 aardvark 71.. zzzz 99 20 byte Egyenként 4 byte

Szótár tömörítése A szótár egyetlen karakterlánc Pointer a szó kezdetére Köv. pointer mutatja a szó végét.systilesyzygeticsyzygialsyzygyszaibelyiteszczecinszomo. Gyakoiság Napló ptr Szó ptr. 33 29 44 126 Binary search these pointers Teljes hossz = 500KB x 8 = 4MB Pointerek 4M pozícióra log 2 4M = 22bits = 3bytes

Napló Kb 45 MB Szótár 4 byte gyakoriságra Index mérete 4 byte a Napló pointer 3 byte a szó pointer Átl. 8 byte szavanként a szóláncban 500K token ~9.5MB Index ~55 MB

Indexméret Szótövezés / kis-nagybetűs alak Tokenek számát ~40%-al Pointerek számát 10-20%-al Méretet ~30%-al Stopwords 30-as szabály: ~30 szó tesz ki ~30%-ot az írott szövegekben! A leggyakoribb szavak kivágása ~25% helyspórolást hozhat

Pár szó a lekérdezés sebességéről Napló-listák lineáris időben egyesíthetők Optimalizálás: Célszerű a rövid listákkal kezdeni a műveletek elvégzését Ugrólisták használata (index mérete növekszik)

Feldolgozás ugrólistákkal 16 128 2 4 8 16 32 64 128 8 371 1 2 3 5 8 13 0 211 371

Invertált index vége Célszerű tárolni a dokumentumban a szóalak helyét Kifejezés alapú lekérdezés támogatására Ezzel az előbb nem törődtünk Nagyobb index, de ezt használják a gyakorlatban Alternatívája a bi- trigram alapú indexelés

Rangsorolás Általában jó sok dokumentum illeszkedik 1-1 lekérdezésre Több milliárdos korpuszból milliós nagyságrendű találat Fontos, hogy a dokumentumokat rangsoroljuk, relevancia szerint! Megoldás: pl. PageRank Elosztott számítások Hadoop, Mahout, NoSQL, stb...

tf-idf rangsorolás Szavak súlya a tf, és idf szorzata: wt, d = tf t, d log( n df t ) Index készítésekor legyártható a súlyozás Ezt tároljuk el a szó-dokumentum mátrixban A lekérdezést is egy mini dokumentumra nézve a 2 vektor koszinusza adja a hasonlóságot: d j d sim( d j, dk ) = d d j k k = n i= 1 n i= 1 i, j i, k w 2 i, j w w n i= 1 w 2 i, k

Precízió, fedés Kiértékelés Precízió-fedés görbe Kitüntetett fedésértékhez tartozó precíziók meghatározása, majd interpoláció MAP

IR rokonteületek Információ kivonatolás Kivonat: az eredetinél rövidebb, emellett pontos reprezentánsa a dokumentum tartalmának Olvastam a Háború és Békét Oroszországról szól Kérdésmegválaszolás Természetes nyelven megfogalmazott kérdésre a releváns oldal visszaadása helyett a releváns információ visszaadása

Egyéb szövegbányászati alkalmazások és feladatok Alkalmazások Dokumentumosztályozás Véleménykinyerés Információkinyerés X Y cég W áron fölvásárolta QR céget. gépi tanulás Feladatok Lemmatizálás (szótövesítés) Jelentésegyértelműsítés Legvalószínűbb szófaji kódsorozatok, szövegbeli névelemek meghatározása Elemzési fák felállítása