BLEU计算

调用NLTK计算bleu

计算语料的bleu值

import nltk
from nltk.translate.bleu_score import corpus_bleu, SmoothingFunction

def compute_bleu(reference=None, translation=None):
    if reference and translation:
        reference = reference.split('\n')
        translation = translation.split('\n')
        inf_tok = [[nltk.tokenize.word_tokenize(i)] for i in reference]
        tra_tok = [nltk.tokenize.word_tokenize(t) for t in translation]
        chencherry =  SmoothingFunction()
        return corpus_bleu(inf_tok, tra_tok, smoothing_function=chencherry.method7)
    else:
        return "文件内容为空!"

SmoothingFunction:nltk计算bleu默认n-gram为4,当匹配度不存在大于等于4的时候,不加这个参数就会计算出一个极小值,无法表示相似度,加上这个平滑参数后,会计算一个相对合理的bleu值。

sentence_bleu:计算句子级别的bleu时,可用 sentence_bleu,方法一致

计算结果:即使计算同一个文档也经常出现bleu不等于1的情况,原因可能是部分语句长度小于4。

tensor2tendor 计算bleu

调用命令:

  •  t2t-bleu --reference=file1 --translation=file2
    

计算结果:普遍高于nltk,同一文档计算bleu为1

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值