Opened 10 years ago
Closed 10 years ago
#31 closed task (done)
Make skript pro vyhodnocování metod pro rozšiřování TM
Reported by: | Vít Baisa | Owned by: | xbusta1 |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | NLPlab | Keywords: | tm |
Cc: | pary, Ales Horak, Miloš Jakubíček | Due Date: |
Description
Připravit jeden Makefile s pravidly na vyhodnocení jednotlivých metod. V adresáři ...skrivanek_nda/git/Makefile
, takže když spustím v tom adresáři make
, případně make eval_join_1
, make eval_substitute_xyz
, tak to vygeneruje jeden soubor, ze kterého půjde jednoduše poznat, jestli se metoda po posledním zásahu zlepšila nebo zhoršila.
Výsledky z jednotlivých běhů můžou být označené datem/časem, pro lepší orientaci a možnost srovnání se staršími vyhodnoceními.
Vyhodnocovat chceme jednak pokrytí (výstup může vypadat jako tabulky, které máme ve článcích na RASLAN) a jednak kvalitu (na základě).
Stačí asi upravit existující skripty, které generují HTML soubory. Stránky totiž dovolují přidávat jednoduše vysvětlující informace (z jakých subsegmentů se segment vytvořil, seznam kandidátů s hodnotami skóre atd.).
Nevadí, když bude vyhodnocování trvat 10 hodin. Večer spustím make xxx
a ráno se podívám na výsledky.
Makefile musí být v gitu a měl by být rozumně okomentovaný, aby se v něm i prase vyznalo. :)
Možná ještě někdo upřesněte, co má ve vyhodnocení přesně být.
A v rámci úklidu bych výsledky vyhodnocení dával do nějakého adresáře ...eval...
a zpřístupnil na nlp.fi.muni.cz/projekty/skrivanek_nda/eval
či podobně, aby se na výsledky mohl podívat rychle i ten, kdo je negeneroval.
Change History (15)
comment:1 follow-up: 3 Changed 10 years ago by
comment:2 Changed 10 years ago by
Ahoj,
/nlp/projekty/skrivanek_nda/git/Makefile
"make all" vygeneruje různé výstupy pro hodnocení metod JOIN (s překryvem i bez), SUBSTITUTE (bez překryvu) a pro vygenerované subsegmenty.
Soubory jsou nahrány sem:
https://nlp.fi.muni.cz/projekty/skrivanek_nda/test/
do adresáře s názvem podle času vytvoření, v adresáři backup, je to co bylo vygenerováno kdysi dříve, asi časem smažu.
Nové dokumenty lze testovat pozměněním proměnných nameD a nameR v Makefilu a nahráním na příslušná místa (popsáno snad dostatečně v Makefilu).
Adresář https://nlp.fi.muni.cz/projekty/skrivanek_nda/test/TimeStamp/ obsahuje čtyři podadresáře:
html -- soubory se sufixem:
clickingX.html obsahují výstupy pro jednotlivé metody vedle sebe a po rozkliknutí umožňují náhled do toho, jak vznikly nové subsegmenty a podle čeho jsou řazeny.
mosX.html obsahuje částečné překlady pro vygenerované subsegmenty
noOverlapX.html obsahuje částečné překlady pro metodu JOIN bez překryvu
overlapX.html obsahuje částečné překlady pro metodu JOIN s překryvem
subX.html obsahuje částečné překlady pro metodu SUBSTITUTE bez překryvu
tmX.html obsahuje částečné překlady pro translation memory
tmx -- soubory pro testovaní v MemoQ
memoQStatistic -- statistiky z MemoQ
meteor -- různé výstupní statistiky z Meteoru
comment:3 Changed 10 years ago by
Replying to hales:
ve vystupu ma byt videt:
- jake jsou vstupni segmenty
- jake jsou vysledne preklady
- jak vznikl (z jakych casti) vysledny preklad, idealne i jakymi metodami
- jake je maximalni pokryti vstupniho segmentu v seznamu subsegmentu (potencialni horni limit pro preklad konkretniho segmentu)
- jake vsechny subsegmenty jsou k dispozici (nejlepe filtrovane na slova z kazdeho segmentu)
vetsi cast z toho je v tech stavajicich HTML vystupech, neni tam myslim bod 2 a 5 a ve 3 jsou chyby.
3 už je řazeno správně podle jazykového modelu.
Body 2 a 5 buď nechápu správně, nebo už ve vygenerovaných datech jsou.
comment:4 follow-up: 5 Changed 10 years ago by
ad 2 - ktery radek uvadi nas preklad Uživatelská dokumentace
? predpokladam, ze REF je referencni preklad, ne nas
ad 5 - ktery radek uvadi vsechny dostupne subsegmenty, ktere obsahuji slova Uživatelská
a dokumentace
? potrebuju nadmnozinu pouzitych subsegmentu, aby se dala hledat moznost rozsireni. radek MOSES ukazuje jen primo pouzite subsegmenty, ale ne ty, co by se "potencialne" daly pouzit.
u radku MOSES (stejne je to vlastne i jinde) moc nerozumim obsahu rozkliku - anglicky, cesky, zase anglicky ?
comment:5 Changed 10 years ago by
Replying to hales:
ad 2 - ktery radek uvadi nas preklad
Uživatelská dokumentace
? predpokladam, ze REF je referencni preklad, ne nas
ad 5 - ktery radek uvadi vsechny dostupne subsegmenty, ktere obsahuji slova
Uživatelská
adokumentace
? potrebuju nadmnozinu pouzitych subsegmentu, aby se dala hledat moznost rozsireni. radek MOSES ukazuje jen primo pouzite subsegmenty, ale ne ty, co by se "potencialne" daly pouzit.
u radku MOSES (stejne je to vlastne i jinde) moc nerozumim obsahu rozkliku - anglicky, cesky, zase anglicky ?
ad 2 - naše překlady jsou uvedeny v dalších html souborech pro jednotlivé metody (např. pro vygenerované subsegmenty mosX.html), REF označuje referenční překlad.
ad 5 - to tam není, mělo by to být v tom "clicking" html? A měli by tam být všechny subsegmenty, ve kterých se dané slovo vyskytuje? Například slovo "v" se při zběžném pohledu vyskytuje v 125819 subsegmentech, tak které případně vybrat?
První rozklik ukazuje, kterými subsegmenty je segment danou metodou pokryt, druhý rozklik uvádí postupně (podle střídání šedé a oranžové):
Vygenerevané subsegmenty:
1) výsledný překlad;
2) subsegment (zde nemá smysl, jen u metod, kde se něco spojuje);
3) překlad (zde nemá smysl, jen u metod, kde se něco spojuje);
4) číslo, podle kterého jsou výsledky seřazeny (pronásobení pravděpodobností z Mosese * 10000);
5) pravděpodobnosti z Mosese;
6) zarovnání slov mezi zdrojem a překladem (0-0 první slovo ze zdroje se přeloží na první slovo v překladu)
7) nějaká čísla z Mosese, nijak nepožívám
Tam kde se něco spojuje:
| a aktualizaci); |
3) uvádí překlady k subsegmentům, které byly spojeny;
4) skóre jazykového modelu, spojované subsegmenty jsou řazeny podle tohoto skóre
|", je zde navíc pravděpodobnost z jazykového modelu, tak jsou další položky posunuty. |
U metody SUBSTITUTE je první segment ten, do kterého se vkládá, a druhý je ten, co je vkládán.
comment:6 Changed 10 years ago by
ad 2 - ten jeden radek naseho vysledneho (nejlepsiho) prekladu segmentu bych sem pridal. naopak bych nezobrazoval ty casti, ktere "zde nemaji smysl".
ad 5 - myslim, ze potrebujeme videt vsechny "mozne pouzitelne" subsegmenty. v jakem formatu/souboru je mas ulozene? plain text? chtelo by to asi separatni skripticek, ktery je bude umet vypsat filtrovane na slovo/slova, reg.vyraz/vyrazy. tento skripticek by pak byl jen odkazovany z clicking.html.
do mos* apod pridej prosim nejake hlavicky sloupcu, takto se v tom vubec nevyznam.
comment:7 Changed 10 years ago by
Všechny body by měly být nějak vyřešeny, zkontrolujte prosím zde:
https://nlp.fi.muni.cz/projekty/skrivanek_nda/test/2015-01-27---17-56-55/
comment:8 Changed 10 years ago by
pro prakticke hledani chyb si na to budeme muset jeste spolu sednout.
zatim by to ale chtelo vyrazne zrychlit ten vypis subsegmentu podle slova/vyrazu - jak se to ted hleda a o jake počty cca jde? podle toho by to chtelo zvolit ulozeni bud do sqlite nebo pripadne i pgsql...
Vitku, dival ses na to, mas k tomu neco?
comment:9 Changed 10 years ago by
Prochází se tabulka s 2431790 záznamy (/nlp/projekty/skrivanek_nda/git/moses_files/skriv/model/phrase-table) a je procházena následujícím skriptem: /nlp/projekty/skrivanek_nda/git/tools/phrases_for_word.py
comment:10 Changed 10 years ago by
2 miliony mi prijde pro sqlite trochu na hrane, ale radove rychlejsi nez to nacitani textu to bude urcite, minimalne na indexovanych slovech.
vyzkousej to teda pls s sqlite3 v pythonu, to by melo byt jednodussi nez pgsql a snad to bude stacit. udelej skript, ktery to jednorazove nalije do sqlite a zaindexuje. pak primo v tom webovem rozhrani budes davat dotaz, neni nutne generovat vystup pres ajax. dotazy bude nejspis vhodne rozlisovat na regularni vyrazy a substringy (REGEXP/LIKE) a mozna pouzit nejake chytrejsi indexovani (FST), ale to az kdyby standardni indexy nestacily.
comment:11 Changed 10 years ago by
Díval jsem se, ale asi k tomu nic nemám - už se v těch výpisech začínám ztrácet. Jenom k tomu sqlite3: nestačilo by použít grep?
comment:12 Changed 10 years ago by
no, puvodne jsem si rikal, ze ne, ale kdyz se ted divam na format, jak je to ulozene, tak mas asi pravdu. minimalne v rychlosti toho to vyzkouset to stoji za to :-)
jen je tam potreba odbourat to stahovani vysledku - vystup je potreba dostat hned na teto strance. mozna by bylo vhodne tam dat prvnich N vystupu (grep | head -n N, N=500?) a az po kliknuti na "dalsi" by se vypsaly vsechny.
comment:13 Changed 10 years ago by
Prosím o doplnění, jestli jsem na něco zapomněl.
-- formátovat výstup z grepu do tabulky
-- vybrat 20 segmentů z dokumentu od Skřivánka k ručnímu vyhodnocení pro Marka (vyzkoušet různé pravděpodobnosti, pravděpodobnosti popsány zde: http://www.statmt.org/moses/?n=FactoredTraining.ScorePhrases podrobněji "lexical weighting" zde: http://homepages.inf.ed.ac.uk/pkoehn/publications/phrase2003.pdf
-- spojování subsegmentů s jazykovým modelem:
1) pomocí dekódování v Mosesu
-- další návrhy na spojování subsegmentů:
2) spojovat pouze 3 nejpravděpodobnější překlady
3) spojovat maximálně subsegmenty po 3
4) použít upravený Viterbiho algoritmus
-- Marek se pokusí zarovnat referenční překlad k segmentům v dokumentu s porovnáním (využití MemoQ, export do txt ve Wordu)
-- přidat pozadí k odlišení jednotlivých subsegmentů
-- proč u segmentu 310 (2015-01-27---22-50-41/html/2015-01-27---22-50-41-clicking0.html) chybí překlad slova "výskytu"? <- odpověď: není tam kvůli metodě SUBSTITUTE (podrobněji při rozkliknutí překladu u této metody)
-- přidat formulář na testování jazykového modelu
comment:14 Changed 10 years ago by
- grepovat výraz pouze v prvním sloupci
- vybrat raději 100 segmentů pro ruční hodnocení
Pepo, různé úkoly pro různé lidi prosím rozhoď do samostatných ticketů, ať se v tom vyznáme a ať jsou tickety relativně malé úkoly.
comment:15 Changed 10 years ago by
Resolution: | → done |
---|---|
Status: | new → closed |
poslední verze (pro Skřivánka): https://nlp.fi.muni.cz/projekty/skrivanek_nda/test/latest/
ve vystupu ma byt videt:
vetsi cast z toho je v tech stavajicich HTML vystupech, neni tam myslim bod 2 a 5 a ve 3 jsou chyby.