一句话定义
BERTScore 是一种自动评估文本生成质量的指标:它不数两句话里有多少个字面相同的词,而是用预训练语言模型给出的词向量(embedding),去算候选文本和参考文本在语义上到底有多接近。
为什么需要它
机器翻译、摘要、对话回复这类任务,评估是个麻烦事。传统指标像 BLEU、ROUGE 都基于 n-gram(连续的 n 个词)重合度——把生成的句子和参考答案对着数字符串。问题是语言太灵活了:"今天天气真好,我们去公园走走吧"和"今天阳光明媚,咱们去公园散步吧",意思几乎一样,但字面重合度不高,BLEU 会给出低分。反过来,把"好"改成"坏",字面几乎全对,分数却依然漂亮。以人工评测来看,这种打分经常和人的判断对不上。
它是怎么算的
可以想象成两位批改作文的老师。BLEU 老师拿着红笔逐字比对范文,词对不上就扣分;BERTScore 老师先读懂两句话的意思,再问:"你这句里每个词,在范文里有没有意思最接近的对应词?"
具体分四步:
1. 编码。把候选句和参考句送进 BERT(Bidirectional Encoder Representations from Transformers)这类编码器,每个词拿到一个带上下文的向量——同一个词在不同句子里向量不同,这也是它比静态词向量强的地方。
2. 配对。把两边的词两两算AI 词典:余弦相似度">余弦相似度,形成一个相似度矩阵。候选句里的每个词,挑出在参考句里最像的那个词作为匹配点,平均后得到"精确率";反过来做一遍得到"召回率"。
3. 加权。像"的""了"这种高频虚词权重调低,出现少但承载信息的实词权重调高,通常用逆文档频率(idf)来定。
4. 合成。由精确率和召回率算出 F1 分数,作为最终结果。因为模型算出的相似度普遍偏高,实践中常做一次基线重标定,让分数分布更好看、更可读。
和相邻概念的区别
| 维度 | BLEU / ROUGE | BERTScore |
|---|---|---|
| 匹配依据 | n-gram 字面重合 | 上下文向量语义相似 |
| 同义改写 | 容易误判为差 | 能识别 |
| 语序调整 | 敏感 | 相对宽容 |
| 计算成本 | 极低,纯统计 | 需模型前向计算,通常要 GPU |
| 可解释性 | 直观 | 偏弱,但能看到词级对齐 |
实际意义与边界
对做生成任务的团队,BERTScore 适合放进评估流水线:调提示词、换模型、做 A/B 对比时,它能抓住"换了说法但意思没变"的情况,比单看 BLEU 更接近人的直觉。它也能直接当作语义相似度工具,用在文本去重、检索召回、答案匹配上。
但它不是万能判官。它衡量的是"像不像参考文本的语义",对事实错误、逻辑矛盾、数字写错这类问题基本无感——两句话意思相近,不代表内容正确;反过来,一个语义正确但表述风格迥异的答案,也可能拿不到高分。所以工程上常见做法是:自动指标快速筛,人工抽检定终局。另外它依赖底层语言模型,模型自带的偏见会传导到分数里;具体实现、默认参数和分数口径,以官方文档和论文为准。
