Opened 7 years ago

Closed 7 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 Changed 7 years ago by Ales Horak

ve vystupu ma byt videt:

  1. jake jsou vstupni segmenty
  2. jake jsou vysledne preklady
  3. jak vznikl (z jakych casti) vysledny preklad, idealne i jakymi metodami
  4. jake je maximalni pokryti vstupniho segmentu v seznamu subsegmentu (potencialni horni limit pro preklad konkretniho segmentu)
  5. 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.

comment:2 Changed 7 years ago by xbusta1

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 in reply to:  1 Changed 7 years ago by xbusta1

Replying to hales:

ve vystupu ma byt videt:

  1. jake jsou vstupni segmenty
  2. jake jsou vysledne preklady
  3. jak vznikl (z jakych casti) vysledny preklad, idealne i jakymi metodami
  4. jake je maximalni pokryti vstupniho segmentu v seznamu subsegmentu (potencialni horni limit pro preklad konkretniho segmentu)
  5. 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 Changed 7 years ago by Ales Horak

divam se do http://nlp.fi.muni.cz/projekty/skrivanek_nda/test/2015-01-14---16-26-25/html/2015-01-14---16-26-25-clicking0.html

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 in reply to:  4 Changed 7 years ago by xbusta1

Replying to hales:

divam se do http://nlp.fi.muni.cz/projekty/skrivanek_nda/test/2015-01-14---16-26-25/html/2015-01-14---16-26-25-clicking0.html

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 ?

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:

2) uvádí subsegmenty, které byly spojeny (JOIN s překryvem: chyb a
| 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

Vše ostatní je víceméně obdobné, to co bylo spojeno, tak je popořadě odděleno "
|", 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 7 years ago by Ales Horak

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 7 years ago by xbusta1

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 7 years ago by Ales Horak

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 7 years ago by xbusta1

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 7 years ago by Ales Horak

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 7 years ago by Vít Baisa

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 7 years ago by Ales Horak

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 7 years ago by xbusta1

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 7 years ago by Vít Baisa

  1. grepovat výraz pouze v prvním sloupci
  2. 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 7 years ago by xbusta1

Resolution: done
Status: newclosed
Note: See TracTickets for help on using tickets.