DeepSeek BLEU和ROUGE(Recall)的计算

以下是 BLEU Score (Bilingual ​Evaluation ​Understudy)和 ROUGE Score(​Recall-Oriented ​Understudy for ​Gisting ​Evaluation) 的原生Python实现(不依赖第三方库),通过分步计算逻辑和示例详细说明。


一、BLEU Score 实现

核心逻辑
  1. n-gram匹配:计算候选文本和参考文本的n-gram匹配数(截断到参考文本中最大出现次数)。
  2. 精确度计算:各n-gram的匹配数除以候选文本n-gram总数。
  3. 几何平均:对1-gram到4-gram的精确度取几何平均。
  4. 长度惩罚:候选文本过短时施加惩罚。
代码实现
import math

def get_ngrams(text, n):
    """生成n-gram列表"""
    return [tuple(text[i:i+n]) for i in range(len(text)-n+1)]

def bleu_score(candidate, reference, max_n=4):
    """计算BLEU分数(单参考文本简化版)"""
    candidate = candidate.split()
    reference = reference.split()
    
    # 长度惩罚
    c_len = len(candidate)
    r_len = len(reference)
    bp = 1.0 if c_len > r_len else math.exp(1 - r_len / c_len) if c_len !=0 else 0.0

    # 计算各n-gram的精确度
    precisions = []
    for n in range(1, max_n+1):
        # 生成候选和参考的n-gram
        cand_ngrams = get_ngrams
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值