You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多参考句场景下基于集合去重的n-gram precision计算是否正确?

BLEU分数多参考句场景下n-gram精度计算的疑问与解答

我在理解BLEU分数的计算逻辑时发现,当存在多个参考句且需要计算n-gram精度时,将所有内容转换为集合去重似乎更为合理。n-gram内部的词序会被保留,但单个n-gram的顺序无关紧要,因此确实可以仅使用集合来计算假设句相对于多个参考句的n-gram精度。具体步骤如下:

  1. 生成两个集合,一个是所有参考句的n-gram集合的并集,另一个是假设句的所有n-gram集合,均需去除重复项;
  2. 计算两个集合的交集,交集中的n-gram数量除以假设句集合中的n-gram数量即为n-gram精度。

我认为这一思路也得到了BLEU score的nltk实现的支持,并附上相关代码:

# Extracts all ngrams in hypothesis
# Set an empty Counter if hypothesis is empty.
counts = Counter(ngrams(hypothesis, n)) if len(hypothesis) >= n else Counter()

# Extract a union of references' counts.
# max_counts = reduce(or_, [Counter(ngrams(ref, n)) for ref in references])
max_counts = {}
for reference in references:
    reference_counts = (
        Counter(ngrams(reference, n)) if len(reference) >= n else Counter()
    )
    for ngram in counts:
        max_counts[ngram] = max(max_counts.get(ngram, 0), reference_counts[ngram])

# Assigns the intersection between hypothesis and references' counts.
clipped_counts = {
    ngram: min(count, max_counts[ngram]) for ngram, count in counts.items()
}

请问我是否存在理解偏差,或是这种计算n-gram precision的方式是正确的?


你的理解存在偏差,这种基于集合去重的计算方式不符合BLEU分数的标准n-gram精度逻辑。

BLEU的n-gram精度核心是统计n-gram的出现次数,而非仅判断n-gram是否存在:

  • 假设句中某个n-gram重复出现多次时,不能直接去重,需要考虑参考句中该n-gram的最大出现次数(即代码里的max_counts),然后对假设句的次数做“截断”(取假设句次数和参考句最大次数的最小值,也就是clipped_counts)
  • 最终的n-gram精度是所有clipped_counts的总和,除以假设句中所有n-gram的总出现次数,而不是集合交集大小除以假设句集合的元素数量。

举个直观的例子:

  • 假设句:I love love love you,2-gram总出现次数为4,集合去重后仅3个
  • 参考句1:I love you,2-gram各元素出现次数为(I,love):1、(love,you):1
  • 参考句2:I love love you,2-gram各元素出现次数为(I,love):1、(love,love):1、(love,you):1

按照你的集合思路,交集是3个,除以3得1.0;但按照BLEU的标准逻辑:
max_counts中各2-gram的最大次数是(I,love):1、(love,love):1、(love,you):1
clipped_counts总和是1+1+1=3,除以假设句总次数4,得到0.75,这才是正确的n-gram精度。

再看你贴的NLTK代码:

  • counts是统计假设句中每个n-gram的出现次数(不是集合)
  • max_counts是遍历所有参考句,取每个n-gram在参考句中的最大出现次数
  • clipped_counts是对假设句的每个n-gram次数做截断,取和参考句最大次数的最小值
    这些逻辑都是基于次数统计,而非集合去重,所以你的思路和标准BLEU逻辑不符。

内容的提问来源于stack exchange,提问作者Yuirike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:54:54