我需要计算BLEU分数,以确定两个句子是否相似。我读过一些文章,主要是关于测量机器翻译准确度的BLEU分数。但是我需要一个BLEU分数来找出相似性在同一种语言的句子之间[英语]。(即)(两个句子都是英语)。感谢期待。
答案 0 :(得分:25)
对于句子级别比较,请使用平滑的BLEU
用于机器翻译评估的标准BLEU分数(BLEU:4)仅在语料库级别真正有意义,因为任何没有至少一个4克匹配的句子将得到0分即可。
这种情况发生的原因是,BLEU的核心实际上只是n-gram精度的 geometric mean ,它通过简洁惩罚进行缩放,以防止使用来自某些匹配材料的非常短的句子获得不适当的高分。由于几何平均值是通过将要包含在平均值中的所有项相乘来计算的,因此对于任何n-gram计数都为零会导致整个得分为零。
如果您想将BLEU应用于单个句子,最好使用平滑的BLEU(Lin and Och 2004 - 参见第4节),在计算之前,您将每个n-gram计数加1 n-gram精度。这将防止任何n-gram精度为零,因此即使没有任何4-gram匹配也会导致非零值。
Java实施
您将在斯坦福机器翻译包 Phrasal 中找到BLEU和平滑BLEU的Java实现。
<强>替代强>
正如Andreas已经提到的,您可能希望使用替代评分指标,例如Levenstein's string edit distance。然而,使用传统的Levenstein字符串编辑距离来比较句子的一个问题是它没有明确地意识到单词边界。
其他替代方案包括:
答案 1 :(得分:4)
答案 2 :(得分:3)
好吧,如果您只想计算BLEU分数,那就很简单了。将一个句子作为参考翻译,将另一个句子作为候选翻译。
答案 3 :(得分:1)
也许(Levenstein)编辑距离也是一个选项,或汉明距离。无论哪种方式,BLEU分数也适合这项工作;它测量一个句子与引用的相似性,这样只有当它们与您的问题使用相同的语言时才有意义。
答案 4 :(得分:0)
您可以使用Moses multi-bleu脚本,您也可以使用多个引用:https://github.com/moses-smt/mosesdecoder/blob/RELEASE-2.1.1/scripts/generic/multi-bleu.perl