[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
user:zeman:deltacorpus [2016/05/10 20:09]
zeman
user:zeman:deltacorpus [2016/06/30 08:46] (current)
zeman
Line 2: Line 2:
  
 Delexicalized tagging and parsing. Delexicalized tagging and parsing.
 +
 +https://github.com/ufal/deltacorpus
  
 Cesty na disku: Cesty na disku:
Line 11: Line 13:
 ===== TODO ===== ===== TODO =====
  
-  * Kromě ''c7'' natrénovat ještě další kombinované modely cílené na slovanskérespgermánské nebo románské jazykyVyhodnotit úspěšnost na testovacích datech vydat opravený DeltacorpusPokud možno ještě pred LRECem+  * Posunout se k parsingu (nový článek na PACLIC, odložený deadline 12.6.2016). 
-  Místo HamleDTu 3.0 to celé vyzkoušet na Universal Dependencies 1.2, případně dokonce 1.3Rovněž pokud možno ed LRECem+    * U parsingu se zatím musíme držet UD 1.2 a nemůžeme přejít na UD 1.3, pokud si sami nenatrénujeme UDPIPE na 1.3. Potřebujeme se umět srovnat s parsingem nad značkami predikovanými supervizovaným modelem, a takové značky máme od Milana k dispozici pro UD 1.2. (Dělal to stylem 9+1 dílů, takže mohl označkovat trénovací i testovací data modelem, který nebyl přímo na těch datech natrénovaný.) 
-  Posunout se k parsingu (nový článek na PACLIC).+    * Trénovací i testovací treebank obsahuje deltaznačkyžádné rysy, žádná slova ani lemmata. 
 +    * Pro každý jazyk je třeba rozhodnout, kterému deltamodelu věřímeA samozřejmě potřebujeme vždy takovou modifikaci, aby trénovací data deltamodelu neobsahovala dotyčný jazyk. Na tom už se pracuje. c7 pro všechny už jsem vyzkoušel dopadlo to katastrofálněAle je možné, že jsem použil značky z HamleDTa a nasadil je na UD, tím by se část katastrofy vysvětlovala
 +    I u parsingu vyzkoušet multi-source transfer, tj. na zdrojové straně je směs několika jazyků vybraných podle různých kritérií(Pozor, při zkoumání učicí křivky beru prvních N vět, tak aby u té směsi nebyly všechny ze stejného jazyka, musela by být směs nějak pravidelně prokládaná.
 +    * Zkusit delexikalizovaný parsing bez jazykově závislých relací, tjvyhodit dvojtečku a vše za ní. Měříme sice UAS, ale nějakou roli to může hrát při trénování. 
 +    * Zkusit delexikalizovaný parsing zcela bez rysů. U deltaznaček už to tak máme, ale u Milanem predikovaných a u zlatých dat ještě ne. 
 +    * Technická delexikalizace: interpunkci částečně nechat (jen trochu sjednotit) a čísla evést na 000
 +    K delexikalizovanému parsingu na deltaznačkách přidat ty jazykově nezávislé meta-rysy, třeba se parser něco naučí na nich. 
 +    * Tagger, který má dispozici 50 nejčastějších slov rozhodnutých ručně (šlo by nasimulovat tím, že je prostě řekneme správně podle zlatého standardu). 
 +  * Bude-li to vypadat smysluplně, vydat parsebank těch 107 jazyků. 
 +  * Srovnat se s rychloanotací cílového jazyka. Třeba 20 vět, lexikalizovaných, ale bez značek (protože nemáme tagger). Klidně s pomocí Google Translate tam, kde to jde. 
 +  * Obdobně je zajímavá rychloanotace u značek, viz Cucerzan and Yarowsky 2002. Vybrat 100 nejčastějších slov, dát jim značky. 
 +  * Článek
 +    * Citovat Loganathana (použil delex na indické jazyky)
 +    * Citovat Teresu Lynn (použila to přímo k urychlení tvorby irského treebanku). 
 +    * Citovat Rudu Rosu (algoritmus výběru vhodného zdrojového jazyka; váhy v MST parseru). 
 +    * Vůbec by neškodilo vyhodnotit to na více parserech. Nebo alespoň přidat nivreeager + liblinear, je to rychlé. 
 +    * Analýza chyb (u deltaznaček zopakovat, protože máme nová data; u delparsingu jsme ji zatím nedělali). 
 + 
 +===== 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ů ===== ===== 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é. 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.

[ Back to the navigation ] [ Back to the content ]