====== Turecká morfologie ====== Poznámky k nástrojům a pokusům s tureckou morfologií. Momentálně jde také o poznámky k diplomce Sibel Ciddi (akademický rok 2012-2013). Úkoly: * Sehnat, rozchodit, natrénovat a otestovat turecký tagger (do 16.6.2013). Možná se dá sehnat tagger s již natrénovaným modelem. Možná nás ale víc zajímá trénovatelný tagger (např. TreeTagger), který bychom si sami natrénovali na treebanku METU, který máme k dispozici. I tak budeme muset řešit nekompatibilitu značek METU se značkami produkovanými TRmorphem. * Natrénovat a otestovat parser. Propojit ho s taggerem, abychom byli schopni zpracovávat nový turecký text. * Dan: Stáhnout data z turecké Wikipedie a dát je Sibel, aby na nich otestovala pokrytí TRmorphem. Předpokládáme, že se tu najde spousta nepokrytých pojmenovaných entit, pro které pak budeme vyvíjet guesser. * Dan: Možná bych se mohl pokusit rozchodit TRmorph v Treexu, abych si ho mohl zkoušet i sám. Po Sibel každopádně nic takového vyžadovat nebudu. Pak se musíme rozhodnout, jaký bude konečný cíl: * Guesser na slova nepokrytá TRmorphem. (Nápady: pozorovat koncovky, něco na způsob neřízené morfematické segmentace; použít parser a zkoumat kontext ve stromu (visí to na slovesu? Tak to bude podstatné jméno... (mohla by to být i předložka, ale ty asi všechny pokrývá TRmorph))) * Rozpoznávač víceslovných výrazů (MWE), pojmenovaných entit (NE) apod. Opět bychom mohli využít i parser. ===== Tree Tagger ===== cat /net/data/conll/2007/tr/train.conll | prepare_lexicon_from_conll.pl --type train > train.tr.txt cat /net/data/conll/2007/tr/train.conll | prepare_lexicon_from_conll.pl --type lexicon > lexicon.tr.txt cat /net/data/conll/2007/tr/train.conll | prepare_lexicon_from_conll.pl --type openclass > openclass.tr.txt cat /net/data/conll/2007/tr/test.conll | prepare_lexicon_from_conll.pl --type test > test.tr.txt cat /net/data/conll/2007/tr/test.conll | prepare_lexicon_from_conll.pl --type train > gold.tr.txt bin/train-tree-tagger lexicon.tr.txt openclass.tr.txt train.tr.txt tr.par -st 'Punc.Punc._' bin/tree-tagger -token -lemma tr.par < test.tr.txt > tagged.tr.txt eval_tree_tagger.pl tagged.tr.txt gold.tr.txt Výsledky na tureckém treebanku CoNLL 2007 jsou následující: 3610 total tokens. 1221 unknown tokens (33.822715 %). 2656 correct tags (73.573407 %). 2200 correct tags of known words (92.088740 %). 456 correct tags of unknown words (37.346437 %). 3199 correct parts of speech (88.614958 %). 2270 correct parts of speech of known words (95.018836 %). 929 correct parts of speech of unknown words (76.085176 %). ===== RF Tagger ===== Stejně jako Tree Tagger je to dílo Helmuta Schmida a dá se zadarmo stáhnout z jeho stránek. Prý je vhodnější pro sady značek, které se skládají z morfologických rysů. Formát trénovacích dat je obdobný jako u Tree Taggeru, ale je potřeba upravit morfologické značky, aby se dal odlišit slovní druh a rysy a aby všechny značky pro jeden slovní druh měly stejný počet rysů. Upravil jsem rovnou skripty, kterými připravuju data pro Tree Tagger, takže nyní stačí převzít trénovací data od něj. RF Tagger neumí lematizovat a také na výstupu neoznačuje neznámá slova (Tree Tagger je označoval právě pomocí zvláštního lemmatu). Je ale možné vzít značky od RF Taggeru a lemmata od Tree Taggeru. man -l src/man1/rft-train.1 man -l src/man1/rft-annotate.1 bin/rft-train train.tr.txt wordclass/wordclass.txt tr.par bin/rft-annotate tr.par test.tr.txt tagged.tr.txt ../treetagger/join_rf_tree.pl tagged.tr.txt ../treetagger/tagged.tr.txt > lemmatized.tr.txt ../treetagger/eval_tree_tagger.pl lemmatized.tr.txt gold.tr.txt Výsledky na tureckém treebanku CoNLL 2007 jsou následující: 3611 total tokens. 1221 unknown tokens (33.813348 %). 2856 correct tags (79.091664 %). 2182 correct tags of known words (91.297071 %). 674 correct tags of unknown words (55.200655 %). 3339 correct parts of speech (92.467461 %). 2256 correct parts of speech of known words (94.393305 %). 1083 correct parts of speech of unknown words (88.697789 %). ===== Turecká Wikipedie ===== cd /net/data/wikipedia/tr wget http://dumps.wikimedia.org/trwiki/20130606/trwiki-20130606-pages-articles.xml.bz2 unzip.pl trwiki-20130606-pages-articles.xml.bz2 DUMP=trwiki-20130606-pages-articles wget http://dumps.wikimedia.org/trwiki/20130606/$DUMP.xml.bz2 bunzip2 $DUMP.xml.bz2 gzip $DUMP.xml treex -Ltr Read::WikiDump from=$DUMP.xml.gz Write::Text path=texts to=. # Note that zip has problems with UTF8 characters in filenames. find texts -name '*.txt' -print | zip -m trwiki -@ find texts -name '*.txt' -print > filelist.txt tar czf trwiki.tgz --files-from filelist.txt 212476 článků (dokumentů, souborů) Zabalený soubor má necelých 300 MB, rozbalený má 1,4 GB. * Určitě už někde mám kód, který odstraňuje syntaxi MediaWiki a nechává jen prostý text. * Kromě toho bude potřeba tokenizace a větná segmentace. * Ideálně by to chtělo nějaký načítací blok do Treexu. * Wikiodkazy teď asi zahazovat, ale později je možná ještě budeme chtít využít, abychom lépe odhalili koncovky, rozsah víceslovných výrazů apod.