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ě
c7
natré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.