def _compute_bleu(p, len_pred, len_gold, smooth):
# Brevity penalty.
log_brevity = 1 - max(1, (len_gold + smooth) / (len_pred + smooth))
log_score = 0
ngrams = len(p) - 1
for n in range(1, ngrams + 1):
if p[n][1] > 0:
if p[n][0] == 0:
p[n][0] = 1e-16
log_precision = math.log((p[n][0] + smooth) / (p[n][1] + smooth))
log_score += log_precision
log_score /= ngrams
return math.exp(log_score + log_brevity)
# Calculate BLEU of prefixes of pred.
评论列表
文章目录