6. Automatikus korpuszépítés és a benne való keresés Endrédy István A nyelvtechnológia eszközei és nyersanyagai 2017.04.26.
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?
egy 10milliárd tokenes korpusz A korpusz mérete Tokenszámok könyv tokenszám Biblia 625.000 Jókai összes 6.663.308 Pallas nagylexikon 14.512.892 egy 10milliárd tokenes korpusz elolvasása 95 év lenne kinyomtatva 500m 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 600 millió szó 2003-ban készült http://mokk.bme.hu/resources/webcorpus Magyar Nemzeti Szövegtár 190 millió szó Válogatott tartalom POS-taggelt http://corpus.nytud.hu/mnsz
Ötlet A magyar web szövegeinek letöltése A leggyakoribb szavak, szósorozatok elemzése (n-gramok) 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: Pár száz oldalt letöltünk A több oldalon ismétlődő bekezdéseket megkeressük Az egyedi bekezdések előtti, ill. mögötti azon HTML-minta a nyerő, amely a legtöbb lapon közös 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”
Pázmány korpusz szétválogatás: tisztítás közös kódolás (utf-8) 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 stopword- sűrűség tisztítás 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 Előfordulás a szövegben Önálló előfordulás „túl az Óperencián” 200 „túl az” 300 300-200=100 „túl” 1000 1000-500=500
Szósorozatok valódi gyakoriságának számolása Beágyazott minták 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: [főnév] [főnév] 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) 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 Címkék: B - begin I - inside E - end S - single Szó címke Peter B-NP ‘s brown I-NP dog is B-VP barking I-VP . O
Főnévi csoport felismerése CoNLL-2000 format A chunkerek ugyanazon tanító- és tesztadaton összehasonlíthatóak Fejlesztés: szoftver adat word POS label Peter NN B-NP ‘s brown JJ I-NP dog is VBZ B-VP barking VBG I-VP . O
Főnévi csoport felismerése CoNLL-2000 format 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 szó POS bármely jegy… címke Peter NN B-NP ‘s brown JJ I-NP dog is VBZ B-VP barking VBG I-VP . O 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 animal motion,run quantity (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 - I-NP said VBD indicate.v.03/tell.v.02/express.v.02/… O he PRP he.n.02/helium.n.01/… sold interact.v.01/deal.v.06/sell.v.07/… First rank.n.02/state.n.02/status.n.01/… Illinois language.n.01/indian.n.01/… …
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
with modified tags by toolkit Eredmények method F-score with original tags 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) 94.12% voting system between more chunkers + HunTag3 93.13% 94.59%
modified POS by the toolkit 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 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 IMF EU fagylalt jégkrém bér nyugdíj munka kenyér délután 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ú Statisztikai 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.u- szeged.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