Ssa*_*Vut 7 nlp machine-learning nltk machine-translation bleu
Python NLTK中有BLEU得分的实现,
nltk.translate.bleu_score.corpus_bleu
但我不确定它是否与mtevalv13a.pl脚本相同.
他们之间有什么区别?
简而言之
不,NLTK中的BLEU并不完全相同mteval-13a.perl
.
但它可以变得非常接近,请参阅https://github.com/nltk/nltk/issues/1330#issuecomment-256237324
nltk.translate.corpus_bleu
对应于mteval-13a.pl
ngram的第4阶,有一些浮点差异
可以从https://github.com/nltk/nltk_data/blob/gh-pages/packages/models/wmt15_eval.zip下载比较的详细信息和使用的数据集:
import nltk
nltk.download('wmt15_eval')
Run Code Online (Sandbox Code Playgroud)
主要区别:
在龙
mteval-13a.pl
和之间有几个区别nltk.translate.corpus_bleu
:
第一个区别是mteval-13a.pl
它带有自己的NIST标记器,而BLEU的NLTK版本是度量标准的实现,并假设输入是预标记化的.
另一个主要区别是,mteval-13a.pl
输入是.sgm
格式化的,而NLTK BLEU接收字符串列表的python列表,请参阅zipball中的README.txt,以获取有关如何将文本文件转换为SGM的更多信息.
mteval-13a.pl
期望ngram的订单至少为1-4.如果句子/语料库的最小ngram顺序小于4,则返回0概率,即a math.log(float('-inf'))
.为了模仿这种行为,NLTK有一个_emulate_multibleu
标志:
mteval-13a.pl
能够生成NIST分数而NLTK没有NIST分数实现(至少尚未实现)
除了差异,NLTK BLEU得分包含更多功能:
处理原始BLEU(Papineni,2002)忽略的边缘案件
另外,为了处理Ngram的最大阶数<4的边缘情况,将重新加权单个ngram精度的均匀权重,使得权重的质量总和为1.0
虽然NIST具有几何序列平滑的平滑方法,但NLTK具有相同的平滑方法和更平滑的方法来处理Chen和Collin的句子级BLEU ,2014
最后,要验证NLTK版本的BLEU中添加的功能,可以在帐户中添加回归测试,请参阅https://github.com/nltk/nltk/blob/develop/nltk/test/unit/translate/test_bleu.py
归档时间: |
|
查看次数: |
746 次 |
最近记录: |