文本生成模型输出的整体比较

compare-mt的Python项目详细描述


比较mt

neulab@cmu lti和其他贡献者

构建状态

compare mt(用于"比较我的文本")是一个程序,用于比较多个系统的输出以生成语言, 包括机器翻译、摘要、对话框响应生成等。 要使用它,您需要一个文本格式的"正确"引用,以及两个不同系统的输出。 基于此,比较mt将运行许多分析,试图找出 系统,这将使您更容易了解一个系统比另一个系统做得更好的事情。

基本用法

首先,您需要安装软件包:

# Requirements
pip install -r requirements.txt
# Install the package
python setup.py install

然后,作为一个示例,您可以在包含的两个系统输出上运行此命令。

compare-mt example/ted.ref.eng example/ted.sys1.eng example/ted.sys2.eng

这里,系统1和系统2是我们的基于短语和神经的斯洛伐克英语系统 EMNLP 2018年论文。这将打印出许多统计数据,包括:

  • 总分:关于BLEU总分和长度比的报告
  • 字词准确度分析:用频率桶对字词进行f-测度的报告
  • 句子桶分析:通过各种统计数据(例如句子bleu,长度差与 参考,总长度),并按bucket计算统计数据(例如句子数、每个bucket的bleu分数)
  • n-gram差异分析:计算一个系统中哪个n-gram始终翻译得更好
  • 句子示例:根据句子bleu查找一个系统优于另一个系统的句子

您可以通过 在此处生成HTML报告,或在下面的叙述视频中生成:

image alt text here

总结基本分析中立即突出的结果:

  • 的总分可以看出,神经机器翻译的bleu较高,但句子略短。
  • 从词义准确度分析中我们可以看出,基于短语的机器翻译在低频词上表现得更好。
  • 从句子桶分析中我们可以看出神经系统似乎更擅长翻译较短的句子。
  • 从n-gram差分分析中我们可以看出神经机器翻译有几个词是不擅长的。 但是基于短语的机器翻译是正确的(例如"幻影"),而有一些长短语神经机器翻译更适合 (例如,"将向您展示"。

如果您使用自己的数据运行,您可能会发现有关自己系统的更有趣的内容。尝试比较 你的修改系统与你的基线,看看你发现了什么!

其他选项

有许多选项可用于进行不同类型的分析。 如果要找到所有支持的不同类型的分析,最全面的方法是 看一看比较mt,这是一个比较好的文档,应该给出一些例子。 我们确实强调了一些分词下面是非常有用和常见的分析类型:

显著性检验

该脚本允许您基于bootstrap重采样对分数执行统计显著性测试。你可以设定 手动采样的数目。下面是使用示例数据的示例:

compare-mt example/ted.ref.eng example/ted.sys1.eng example/ted.sys2.eng --compare_scores score_type=bleu,bootstrap=1000,prob_thresh=0.05

使用训练设置频率

一个有用的分析是"词频准确度"分析。默认情况下,此频率是 在测试集中,但是可以说,通过训练集中的频率来知道准确度更有用 演示了模型对他们在训练数据中没有看到或根本没有看到的单词的健壮性。改变 用于计算单词频率和使用训练集(或其他集)的语料库,您可以设置freq\u语料库文件 选择合适的语料库。

compare-mt example/ted.ref.eng example/ted.sys1.eng example/ted.sys2.eng
        --compare_word_accuracies bucket_type=freq,freq_corpus_file=example/ted.train.eng

此外,由于训练集可能很大,您还可以预先计算文件上的计数,

python scripts/count.py < example/ted.train.eng > example/ted.train.counts

然后直接使用这些计数来提高效率。

compare-mt example/ted.ref.eng example/ted.sys1.eng example/ted.sys2.eng
        --compare_word_accuracies bucket_type=freq,freq_count_file=example/ted.train.counts

包含单词/句子标签

如果你对每个单词/句子的标签而不是单词/句子本身进行聚合分析感兴趣,那么 是可能的。作为一个例子,我们为每个示例输出都包含了pos标签。你可以用这些 聚合分析,或基于n-gram的分析。下面给出一个示例:

compare-mt example/ted.ref.eng example/ted.sys1.eng example/ted.sys2.eng 
    --compare_word_accuracies bucket_type=label,ref_labels=example/ted.ref.eng.tag,out_labels="example/ted.sys1.eng.tag;example/ted.sys2.eng.tag",label_set=CC+DT+IN+JJ+NN+NNP+NNS+PRP+RB+TO+VB+VBP+VBZ 
    --compare_ngrams compare_type=match,ref_labels=example/ted.ref.eng.tag,out_labels="example/ted.sys1.eng.tag;example/ted.sys2.eng.tag"

这将通过pos bucket计算单词准确度和n-gram匹配,并允许您查看类似事实的内容 基于短语的机器翻译系统更擅长翻译名词、动词等内容词,而神经机器翻译系统 在翻译虚词方面做得更好。

也可以创建表示数字值的标签。例如,scripts/relativepositiontag.py计算单词在句子中的相对位置,其中0是句子中的第一个单词,0.5是中间的单词,1.0是结尾的单词。然后,可以对这些数值进行屈曲。下面是一个示例:

compare-mt example/ted.ref.eng example/ted.sys1.eng example/ted.sys2.eng 
    --compare_word_accuracies bucket_type=numlabel,ref_labels=example/ted.ref.eng.rptag,out_labels="example/ted.sys1.eng.rptag;example/ted.sys2.eng.rptag"

从这个特殊的分析中我们可以发现,在句子的结尾,nmt比pbmt差,当然,其他种类的数字标签可以用来测量单词的不同属性。

你也可以对句子的标签进行分析。下面是一个示例:

compare-mt example/ted.ref.eng example/ted.sys1.eng example/ted.sys2.eng 
    --compare_sentence_buckets 'bucket_type=label,out_labels=example/ted.sys1.eng.senttag;example/ted.sys2.eng.senttag,label_set=0+10+20+30+40+50+60+70+80+90+100,statistic_type=score,score_measure=bleu'

分析源词

如果有与目标对齐的源语料库,还可以根据 源语言单词,这将允许您检查,例如,源端的不常用单词是否 很难正确输出。下面是使用示例数据的示例:

# Requirements
pip install -r requirements.txt
# Install the package
python setup.py install
0

分析单词likelihood

如果您希望在目标语料库中通过两个系统分析单词的日志相似性,可以使用以下方法

# Requirements
pip install -r requirements.txt
# Install the package
python setup.py install
1

您可以分析每个单词的标签上的单词日志,而不是单词本身:

# Requirements
pip install -r requirements.txt
# Install the package
python setup.py install
2

注意:您也可以使用上述方法分析两种语言模型生成的单词likelihood。

分析其他语言生成系统

还可以使用脚本分析其他语言生成系统。下面是比较两个文本摘要系统的示例。

# Requirements
pip install -r requirements.txt
# Install the package
python setup.py install
3

引文/参考文献

如果您使用compare mt,如果您引用有关它的文件,我们将不胜感激!

# Requirements
pip install -r requirements.txt
# Install the package
python setup.py install
4

上面的文章中包含了大量的文献综述,但其中一些重要的论文借鉴了以下观点:

此外,还有其他用于自动比较或分析mt系统错误的好软件:

  • mt compareval对于单个示例的可视化非常好,但是 不像compare mt那样专注于聚合分析。还有更多的软件依赖性,需要使用web 浏览器,而compare mt可以用作命令行工具。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误