5. Automatikus korpuszépítés és a benne való keresés Endrédy István A nyelvtechnológia eszközei és nyersanyagai 2016.03.09.
The big picture
Nyelvtechnológia Hatékonyabb megoldáshoz: több ismeret a nyelvről több ismeret a világról
Automatikus korpuszépítés és a benne való keresés Korpuszok és építésük Szógyakoriság Mondatszerkezetek
Automatikus korpuszépítés és a benne való keresés Korpuszok és építésük Szógyakoriság Mondatszerkezetek
Korpusz Korpusz-alapú módszerek: a szövegkorpusz segédeszköz, ami empirikus adataival támogatja az intuíciót, mérhetővé teszi a nyelvi jelenségeket, meglévő elméleteket bizonyít/cáfol Korpuszvezérelt módszerek: a korpusz maga szolgáltatja az elméletet, a nyelvész minden előzetes feltevés és elvárás nélkül fordul az adatokhoz, és minden következtetést kizárólag a korpusz megfigyeléseiből von le Serendipity Principle: jelentős dolog véletlen felfedezése, tipikusan akkor, amikor valami egész másra figyelünk
A korpuszannotáció szintjei Egyszerű szöveg Szófaji egyértelműsítés Névkifejezések kezelése Szintaktikai szerkezetek bejelölése Jelentés-egyértelműsítés Koreferencia-kezelés Egyéb
A korpusz méretének mérőszámai Hány token van benne? = Mekkora a korpusz? Mi egy token? $22.50 George W. Bush / George Bush / Bush Korpusznormalizálás The / the / THE Calif. / California MTA / Magyar Tudományos Akadémia Hány type van benne? = Hány különböző szó van benne?
A korpusz mérete Biblia (625.000 token) egy 18milliárd tokenes korpusz elolvasása 85 év lenne kinyomtatva 900m vastag lenne gépi feldolgozás szükséges
Korpusz - miért? A nyelvtechnológia sok területén szükségesek a nagy korpuszok Minél nagyobb, annál jobb A nagy korpusz drága Cél: készítsünk korpuszt automatizáltan
Két nagy magyar szövegkorpusz BME MOKK Magyar Nemzeti Szövegtár 600 millió szó 2003-ban készült http://mokk.bme.hu/resources/webcorpus 190 millió szó Válogatott tartalom POS-taggelt http://corpus.nytud.hu/mnsz
Ötlet 1. A magyar web szövegeinek letöltése 2. A leggyakoribb szavak, szósorozatok elemzése (n-gramok) 3. Hogyan változnak időben?
Hogyan? Crawler, amelyik folyamatosan járja a webet: szövegkinyerőt tartalmaz, amelyik az értékes részt kinyeri a HTML-ből A gyakori szósorozatok azonosítása
Egy crawler sémája
A fő tartalom kinyerése Piros rész: boilerplate
Ugyanez HTML-ben
Boilerplate-eltávolító algoritmusok BTE (Body Text Extraction) Alapötlet: a boilerplate több címkét tartalmaz Megtalálja azt a leghosszabb részt, ahol a legkevesebb címke van Nem tud táblázatokból szöveget kinyerni Sok hiba a magyar oldalakon Statisztikai módszer Ha egy szöveg több oldalon szerepel: akkor az boilerplate Ha egy banner mindig más reklámot ad: része lesz a fő tartalomnak (pl. Bookline az index.hu-n)
Mit csinálnak a többiek? A JusText algoritmus Jan Pomikalek készítette (Masaryk University Faculty of Informatics, Brno, 2011) Ezek arányaiból dönt: Szöveg/címkék Stopword Linkek Szöveg hossza Python Nagyon jó eredmények és minőség
Egy probléma
Az Aranyásó algoritmus A lapok sok ismétlődést tartalmaznak Egy domain megtanulása: 1. Pár száz oldalt letöltünk 2. A több oldalon ismétlődő bekezdéseket megkeressük 3. Az egyedi bekezdések előtti, ill. mögötti azon HTML-minta a nyerő, amely a legtöbb lapon közös 4. Ezt a mintát megjegyezzük, és az összes lapra alkalmazzuk
Crawler-eredmények
Pázmány Korpusz sokféle tartalom több, mint 40.000 domainről (1,5 milliárd token) url-, bekezdés- és mondat szinten duplikátummentes tokenizálás (Huntoken) szófajilag elemzett (Humor + PurePos) NP-annotáció (Huntag3) új, pontosabb annotáció: a Noémi-kód
Szétválogatás: Pázmány korpusz Cikkek kommentek hozzászólás minták keresése ( Hozzászólások 123, nickname 2014.02.02., stb.) Smiley-sűrűség Összefüggő szöveg felsorolások Átlagos bekezdés szószáma > 15 és stopwordsűrűség Közös kódolás (utf-8)
Pázmány korpusz alkorpusz tokenszám fő korpusz 903 438 361 egyéb tartalmak 237 957 892 kommentek 58 995 776 összesen 1 200 392 029
Automatikus korpuszépítés és a benne való keresés Korpuszok és építésük Szógyakoriság Mondatszerkezetek
Szósorozatok valódi gyakoriságának számolása Egyetlen szó könnyű eset Szósorozatok számos probléma A gyakori rövid minta (hibásan) gyakorinak mutathatja a körülötte lévő hosszúakat: szósorozatok Előfordulás a szövegben előfordulás Önálló előfordulás túl az Óperencián 200 200 túl az 300 300-200=100 túl 1000 1000-500=500
Beágyazott minták Szósorozatok valódi gyakoriságának számolása Sebesség- és memóriakorlátok 13 GB méretű szöveggel Alkalmazása: Ha az input egy cikk, valószínűleg a fő szereplőjét vagy témáját adja Ha az input egy korpusz, a tipikus szókapcsolatokat adja Ha az input egy POS-taggelt korpusz, a leggyakoribb struktúráit adhatja az adott nyelvnek
Tervek Az egész magyar web letöltése (tárhely ) 2., 3., sokadik futtatás: csak a különbség tárolása Trendek megfigyelése a web tartalmában
Példák lexikai információra egy kis korpuszból Minta: [főnév] [főnév] [mn] [főnév] Matolcsy György nemzetgazdasági miniszter (694) Barack Obama amerikai elnök (664) Sólyom László köztársasági elnök (367) Angela Merkel német kancellár (345) Nicolas Sarkozy francia elnök (256) Schmitt Pál köztársasági elnök (229) Vlagyimir Putyin orosz elnök (186) Minta: [névelő] [főnév] [ige] A szóvivő elmondta (660) A szakember elmondta (480) A miniszter közölte (320) A bíróság megállapította (29) Minta: [főnév] [főnév] Orbán Viktor (8181) New York (4085) Wall Street (1358) Harry Potter (691) Johnny Depp (645) Angelina Jolie (627) Puskás Ferenc (380)
Automatikus korpuszépítés és a benne való keresés Korpuszok és építésük Szógyakoriság Mondatszerkezetek
Főnévi csoport felismerése Maximal NP Peter s brown dog is barking. Minimal NP
Főnévi csoport felismerése Sequential tagging: címkéket rendelünk a szavakhoz Szó címke Peter B-NP s B-NP brown I-NP dog I-NP is B-VP barking I-VP. O Címkék: B - begin I - inside E - end S - single
CoNLL-2000 format Főnévi csoport felismerése word POS label Peter NN B-NP s POS B-NP brown JJ I-NP dog NN I-NP is VBZ B-VP barkin g VBG.. O I-VP A chunkerek ugyanazon tanító- és tesztadaton összehasonlíthatóak Fejlesztés: szoftver adat
CoNLL-2000 format Főnévi csoport felismerése szó POS bármely jegy címke Peter NN B-NP s POS B-NP brown JJ I-NP dog NN I-NP is VBZ B-VP barkin g VBG.. O I-VP Tipikus jegy (=feature) hangolások: Új jegy hozzáadása pozíció, speciális eset, stb Címke módosítása B-NP peter-nn-b-np Szófaj módosítása trial-and-error kiértékelés: a fentiek tanítása és tesztelése egy chunkeren
Javaslatok új jegyekre noun prep num noun verb 一个人和一只狗跑步 human quantity animal motion,run (A man runs with a dog.)
WordNet - synsetek word pos synsets IOB labels Mr. NNP title.n.06/mister.n.01/name.n.01/ B-NP Terra NNP - I-NP said VBD indicate.v.03/tell.v.02/express.v.02/ he PRP he.n.02/helium.n.01/ B-NP sold VBD interact.v.01/deal.v.06/sell.v.07/ O First NNP rank.n.02/state.n.02/status.n.01/ B-NP Illinois NNP language.n.01/indian.n.01/ I-NP O
WordNet - új jegyek definiálásához WordNet synset gyakoriság hozzárendelt címke arány mister.n.01 785 B:767 / I:18 B:98% / I:2% nation.n.03 63 I:63 I:100% number.n.11 90 B:1 / I:89 B:1% / I:98% day.n.10 186 B:7 / I:179 B:4% / I:96% country.n.04 67 B:1 / I:66 B:1% / I:99% A magas arányú synsetek új jegyként használhatóak az NP felismerésnél
WordNet - a javaslatok áttekintése
Eredmények method F-score with original tags F-score with modified tags by toolkit NLTK - unigram chunker 83.20% 83.80% NLTK - bigram chunker 84.50% 86.10% HunTag3 92.68% 92.74% voting system between more chunkers (Shen and Sarkar, 2005) voting system between more chunkers + HunTag3 92.74% 94.12% 93.13% 94.59%
Eredmények voting format with original POS modified POS by the toolkit IOB1 92.01% 93.57% IOB2 90.71% 92.04% IOE1 90.64% 92.18% IOE2 88.67% 89.96% O+C 90.52% 91.71% after voting 92.74% 94.12% after voting, HunTag3 added 93.13% 94.59%
A mondatok feldolgozása Főnévi csoportok felismerése és kiemelése Egyedi elbírálást kér a kormánytól a károk enyhítésénél az árvízsújtotta Felsőzsolca önkormányzata. (Egyedi elbírálást) kér (a kormánytól) (a károk enyhítésénél) (az árvízsújtotta Felsőzsolca önkormányzata). NP-t kér NP-től NP-nél NP.
A mondat NP-k nélkül A főnévicsoport-kereső és a mondatváz-kereső rendszer demonstrációja Játék (másféle) hiányos mondatokkal
Egy probléma #1 eset Aláírják a finanszírozási szerződést a Budapesti Közlekedési Központ igazgatósága és a Fővárosi Közgyűlés jóváhagyásával. Aláírják (a finanszírozási szerződést) (a Budapesti Közlekedési Központ igazgatósága) és (a Fővárosi Közgyűlés jóváhagyásával). Aláírják NP-t NP és NP-vel. Aláírják NP-t NP-vel.
Egy probléma #2 eset Ráütöttem a pecsétet és az oklevelet átadtam. Ráütöttem (a pecsétet) és (az oklevelet) átadtam. Ráütöttem NP-t és NP-t átadtam.
Hogyan lehetne megkülönböztetni Szemantikus információ kinyerése a korpuszból NP1 és NP2 NP1 valamint NP2 NP1 blabla1, NP2 pedig blabla2 => Ezen NP fejei azonos domainben vannak
Eredmények 75M text => 5,500 pár Kis világismeret NP felismeréshez IMF EU fagylalt jégkrém bér nyugdíj munka kenyér délután reggel növekedés foglalkoztatás...
NP chunking Szabályalapú reguláris kifejezésekkel 81% (magyar nyelvre) Statisztikai HunTag 90%
HunTag: fejlesztési ötletek Más címkékkel (MSD, Humor, Noémi-kód) WordNet-tulajdonságokkal MMO-címkékkel Hibrid (szabályalapú + statisztikai) Tiltó szabályokkal HunTag újraírása, más matematikai modellek
Cikkek A Hungarian NP-chunker Gábor Recski, Dániel Varga http://eprints.sztaki.hu/7155/1/oyb8-4-recski_varga.pdf Szófaji kódok és névelemek együttes osztályozása Móra György, Vincze Veronika, Zsibrita János http://www.inf.uszeged.hu/projectdirs/mszny2011/images/stories/kepek/mszny2011_press_ nc_b5.pdf (139. oldaltól) More Effective Boilerplate Removal-the GoldMiner Alg. István Endrédy, Attila Novák http://polibits.gelbukh.com/2013_48/more%20effective%20boilerpla te%20removal%20-%20the%20goldminer%20algorithm.pdf Motivációs videó https://www.youtube.com/watch?v=nfoudtpbv68