Comments (19)
I'll do it
from neuralmonkey.
Mam to hotový, ale radši bych to nejdřív otestoval.. Máme nějaký texty, o kterých víme, jaký maj BLEU?
from neuralmonkey.
ftp://jaguar.ncsl.nist.gov/mt/resources/mteval-v13.pl je referenční implementace, silně doporučuji používat --international-tokenization
, aby to správě řešilo utf8. Napsal jsem si k tomu wrapper, abych nemusel řešit ten příšerný sgm formát. Takže jedna možnost je si takto ohodnotit libovolné překlady.
Pokud to chceš testovat na nějakém větším množství textů, tak na http://wmt.ufal.cz/ je BLEU pro všechny WMT systémy z posledních let. Též zde http://ufallab.ms.mff.cuni.cz/~popel/wmt15-16-bleu.csv a http://ufallab.ms.mff.cuni.cz/~popel/wmt15-16-bleu-cased.csv a ty texty lze stáhnout jednotlivě z http://matrix.statmt.org/ nebo pro IT task naráz z http://ufallab.ms.mff.cuni.cz/~popel/it-test2016.tar.gz
Pozor na to, že BLEU uváděné na http://matrix.statmt.org/ je bez --international-tokenization
.
from neuralmonkey.
Dík. Já jsem to zapracoval do toho našeho pythonu tak uvidim, jestli to funguje. Dělal jsem to podle článku a taky to z části obšlehnul z treexu..
from neuralmonkey.
Tak když jsem to nltk
em tokenizoval a pustil na edinburkem přeložený en-de 2016, tak mi vyšlo 34.7 na lowercasovanym, na matrix.statmt.org je 34.8, rozdíl přikládám různý tokenizaci. Pro zajímavost, nltčí corpus_bleu
na case-sensitive vychází 35.24, nám asi 34.09 a na matrix.statmt.org 34.2. Takže si troufám tvrdit, že to máme správně.
from neuralmonkey.
tested, closing.
from neuralmonkey.
Je tam smoothing? Ze začátku trénování se bude nutně stávat, že tam nebudou ty n-gramy a dělelio by to nulou.
from neuralmonkey.
Smoothing tam je takovej, že když by to dělilo nulou, tak to dá 0 - tak se to aspoň řeší v Treexu.
from neuralmonkey.
Referenční implementace má jiný smoothing než Treex.
https://github.com/ufal/qtleap/blob/master/cuni_train/bin/mteval-v13a.pl#L831-L873
Možná se tu bude líp číst zde
https://github.com/choko/MT-ComparEval/blob/master/libs/Metrics/GeometricPrecision.php#L43-L63
from neuralmonkey.
dík, časem to tam přidám
from neuralmonkey.
přidal jsem wrapper pro martinův wrapper, tamto bleu co jsem udělal tak teď nějak blbne a asi bych ho deprecoval a časem smazal.
from neuralmonkey.
Občas ta referenční implementace padá na nějaký divnosti. @martinpopel nevíš, co s tim? Vypadá to na nějaký unicode nedorozumění nebo spíš ještě na něco úplně jinýho.. Padá to někde, kde se počítá nist pokuta za délku. Jde to spustit tak, aby se nepočítalo NIST skóre? Stejně nás zajímá jen BLEU..
EDIT: Ještě jsem se nedíval, ale myslím, že by mohly bejt v trénovacích datech prázdný věty. Ty by pak vysvětlovaly dělení nulou.
EDIT2: Je ale určitě možný, že náš dekodér vyplivne prázdnou větu, která na vstup toho evaluátoru pak projde jako prázdná řádka
Use of 'Hyphen' in \p{} or \P{} is deprecated because: Supplanted by Line_Break property values; see www.unicode.org/reports/tr14; at /home/jihe01/mmmt/lib/mteval/mteval-v13a.pl line 947.
Illegal division by zero at /home/jihe01/mmmt/lib/mteval/mteval-v13a.pl line 886.
MT evaluation scorer began on 2016 Jul 7 at 13:04:29
command line: /home/jihe01/mmmt/lib/mteval/mteval-v13a.pl --international-tokenization -r /tmp/XJec1btp3z.ref -s /tmp/fD5jQCTTug.src -t /tmp/5k8wxHsAp9.tst
Evaluation of any-to-cs translation using:
src set "sample-set" (1 docs, 64 segs)
ref set "sample-set" (1 refs)
tst set "sample-set" (1 systems)
Use of uninitialized value $bleu in multiplication (*) at /home/jihe01/mmmt/lib/mteval/wrap-mteval.pl line 73, <> line 64.
Use of uninitialized value $nist in concatenation (.) or string at /home/jihe01/mmmt/lib/mteval/wrap-mteval.pl line 74, <> line 64.
from neuralmonkey.
Ten warning s Hyphen s tím nemá nic společného - jde ho umlčet takto: ufal/qtleap@6e4d9e9d14fd6f
Počítání NIST score jde vypnout přepínačem -b
(viz mteval-v13a.pl -h
... "-b generate BLEU scores only").
Ta chyba mi přijde spíš něco jako, že reference byla celá prázdná. (Pouštíš ten skript na celý dokument, nebo na jednotlivé věty?)
from neuralmonkey.
Pouští se to na celou batch, reference jsou v nějakym dočasnym souboru a překlady tomu dávám rourou na vstup. Batch má velikost 64, takže jedině by se všech 64 vět přeložilo na prázdnou větu. (Což nevim jak moc je pravděpodobný, nicméně pokud to uskupí tak, že to jako první slovo vygeneruje </s>
, aniž by to záviselo na vstupu, tak to takhle dopadne.)
from neuralmonkey.
Reference prázdná snad neni. V trénovacích datech jsem žádný prázdný řádky nenašel.
from neuralmonkey.
Ten můj wrapper předpokládá, že tst (typicky z roury) má stejný počet řádek jako reference. Ale nijak to nekontroluju (asi bych měl, protože jinak mteval spadne, ale snad na jiné chybě než division by zero). Jedna (několik) prázdná věta by vadit neměla, snad ani v referenci, ale to nemám ověřené. Máš-li minimal test case, na kterém to padá, tak se na to mohu podívat.
from neuralmonkey.
Tak už jsem to vyhackoval.. Když reference i hypotéza mají stejnej počet řádek, ale jedna řádka z reference obsahuje právě jednu mezeru (a nic víc), tak to padne. Příkaz:
perl wrap-mteval.pl excerpt.val.de.txt < excerpt.val.en.txt
Soubory:
excerpt.val.de.txt
excerpt.val.en.txt
EDIT: Padne to i když je ta řádka prázdná. Přiloženej output file má taky prázdnou řádku, ale spadne to i když na ní něco je. Pokud je prázdná řádka jen v outputu a ne v referenci, tak to projde.
EDIT2: Když se to spustí s -b
, tak to funguje i s prázdnýma řádkama.
from neuralmonkey.
👍
from neuralmonkey.
Nemám čas teď zkoumat, proč NIST padá na prázdných větách v referenci, ale asi je to tak i správně (jen by to mělo napsat lepší hlášku s číslem prázdné řádky). Stejně ten NIST skript nemohu opravit "u zdroje". Tak jsem aspoň dodal option -b
do mého wrapperu: ufal/qtleap@8f9ada01e148
from neuralmonkey.
Related Issues (20)
- max_length must be undefined when using SequenceLabeler HOT 1
- learning_utils.join_exection_results does not support OutputSeries == dict
- from_dataset does not exist HOT 2
- dataset.from_files HOT 1
- Confusing Exception message in dataset.py
- Add an output buffering for neuralmonkey-run HOT 2
- Unify dropout usage
- GreedyRunner should not fetch training-related tensors by default during inference HOT 4
- Running as server is broken HOT 1
- neuralmonkey-run with RNN model does not work without reference HOT 1
- Dataset series should support max_len (max_size) flag.
- Neural Monkey does not throw exception when main.initial_variables contains nonexistent path.
- Neural Monkey should throw Exception when tf.Saver.restore fails
- How to train a transformer model with multi-source encoders ? HOT 3
- Exception: Unexpected fields: runners_batch_size HOT 1
- Requirement of editing the post-edit.ini and translation.ini for APE and MT respectively HOT 1
- The Model Configuration in Machine Translation task HOT 1
- some questions about multi-source based transformer model HOT 2
- Did you mean file './dataset.load_dataset_from_files'? HOT 1
- Interested in your paper HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from neuralmonkey.