[ 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

Next revision
Previous revision
Last revision Both sides next revision
user:zeman:deltacorpus [2016/05/10 18:48]
zeman created
user:zeman:deltacorpus [2016/06/09 10:41]
zeman Hotovo.
Line 2: Line 2:
  
 Delexicalized tagging and parsing. Delexicalized tagging and parsing.
 +
 +https://github.com/ufal/deltacorpus
  
 Cesty na disku: Cesty na disku:
   * ''/home/zhiwai/pos'' ... zde zůstal Zhiweiův kód   * ''/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/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   * ''/net/work/people/zeman/delextag'' ... zde to dále rozvíjí Dan
  
 ===== TODO ===== ===== 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ý DeltacorpusPokud možno ještě pred LRECem+  * Vydat novou verzi Deltacorpusu (mj. jsem ji slíbil v prezentaci na LRECu): 
-  Místo HamleDTu 3.to celé vyzkoušet na Universal Dependencies 1.2, případně dokonce 1.3Rovněž pokud možno ed LRECem+    * Kromě ''c7'' natrénovat ještě další kombinované modely cílené na konkrétní skupiny jazyků. 
-  * Posunout se k parsingu (nový článek na PACLIC).+    * Vyhodnotit úspěšnost nových kombinovaných modelů na testovacích datech (zatím to mám na vývojových datech). 
 +  * Ozvat se Vladovi Benkovi s gruzínštinou (k té by se mohl hodit i UniMorph Christo Kirova Davida Yarowského, http://github.com/ckirov/UniMorph/). 
 +  * Posunout se k parsingu (nový článek na PACLIC, odložený deadline 12.6.2016). 
 +    * 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ě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ý.) 
 +    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ěříme. A 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 a 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
 +  * 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 struktury 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 ]