This is an old revision of the document!
Table of Contents
Deltacorpus
Delexicalized tagging and parsing.
Cesty na disku:
/home/zhiwai/pos… zde zůstal Zhiweiův kód/home/marecek/listr/delex_pos… zde to dále rozvíjí David/home/marecek/listr/ud_delex_pos… vylepšené makefily a data z Universal Dependencies 1.2
/net/work/people/zeman/delextag… zde to dále rozvíjí Dan
TODO
- Kromě
c7natrénovat ještě další kombinované modely cílené na slovanské, resp. germánské nebo románské jazyky. Vyhodnotit úspěšnost na testovacích datech a vydat opravený Deltacorpus. Pokud možno ještě pred LRECem. - Místo HamleDTu 3.0 to celé vyzkoušet na Universal Dependencies 1.2, případně dokonce 1.3. Rovněž pokud možno před LRECem.
- Posunout se k parsingu (nový článek na PACLIC).
Deltacorpus
Verze 1.0 (2016-03-17) obsahuje 107 jazyků vybraných z W2C. V každém je první milión tokenů (nebo méně, pokud jich W2C neobsahuje milión). Všechny jsou označkované stejným modelem, a to tím, který se při našich pokusech choval v průměru nejlépe: klasifikátor SVM se 17 rysy natrénovaný na směsi c7, tedy na bulharštině, katalánštině, němčině, řečtině, hindštině, maďarštině a turečtině; z trénovacích dat každého z těchto jazyků jsme použili prvních 50000 tokenů.
Více než polovina jazyků v Deltacorpusu je indoevropských, a z nich velké skupiny tvoří jazyky baltoslovanské, germánské a románské. Takže první, co chceme změnit, je alternativní mix trénovacích jazyků pro tyto cílové skupiny. Pokud budeme vybírat jen z těch jazyků HamleDTa, které už jsme použili pro trénování v minulosti, tak máme:
- Pro baltoslovanské jazyky bulharštinu, češtinu a ruštinu.
- Pro germánské jazyky němčinu, angličtinu a švédštinu.
- Pro románské jazyky katalánštinu, italštinu a portugalštinu.
- Lze ještě uvažovat o tom, že
- pro ostatní indoevropské jazyky, pro semitské jazyky, svahilštinu a také pro všechny umělé jazyky použijeme směs indoevropských jazyků, tj. z původního c7 vyhodíme maďarštinu a turečtinu a nahradíme je třeba češtinou a portugalštinou;
- pro aglutinační jazyky (uralské, turkické, altajské, drávidské, gruzínštinu a baskičtinu) z původního c7 určitě necháme maďarštinu a turečtinu; více podobných jazyků pro trénování nemáme, ale mohli bychom snížit vliv jazyků s chudší morfologií, tj. např. přidat češtinu, ruštinu a švédštinu a naopak vyhodit bulharštinu, katalánštinu a hindštinu;
- zbývající jazyky (nevarština, vietnamština a austronéské jazyky) ponecháme pod c7, protože toho o nich neumíme mnoho říct a hlavně nemáme trénovací jazyk, o kterém předpokládáme, že je jim podobný.
Tyhle nové trénovací směsi bychom samozřejmě měli opět vyhodnotit na testovacích jazycích, které máme k dispozici. V článku bylo 19 testovacích jazyků, ale vynechal bych bengálštinu a telugštinu, kde v podstatě nemáme povrchové věty.
Obecné poznámky
Zhiweiův kód je v Pythonu a používá jeden nestandardní modul, regex. Lze ho doinstalovat pomocí pythonovského nástroje pip; ten lze zase nainstalovat jako balíček pro Ubuntu. Při instalaci pipem lze přidat volbu –user, která způsobí, že modul se nainstaluje do domovské složky aktuálního uživatele, nevyžaduje tedy přístup do systémových oblastí disku.
Jak spočítat hodnoty rysů
Rysy se získávají z velkého neanotovaného korpusu, v našem případě typicky z W2C. Výstupem je slovník, který pro každé slovo (typ) dodá hodnoty rysů. Na základě tohoto slovníku můžeme převést libovolný nový text daného jazyka na posloupnost struktur rysů. Některá slova budou OOV a nedostanou žádné rysy. Alternativně bychom je mohli přilepit k W2C a spočítat rysy i s nimi, ale to by bylo náročné.
Jak natrénovat a pustit tagger
Zhiwei dělal obojí v jednom kroku. Prošel trénovací data, natrénoval klasifikátor, nikam ho neukládal a hned ho aplikoval na testovací data. Klasifikátorů měl několik různých (např. SVM nebo KNN), ale žádný z nich nebral v úvahu kontext. Klasickým taggerům posloupností se to tedy moc nepodobalo. Slova by mohla být klidně seřazená abecedně jako ve slovníku a každé by dostalo právě jednu značku.
