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

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