首页/AI/提示词工程速查/语义相似度指标(BERTScore 思路)
评估与迭代50 条

语义相似度指标(BERTScore 思路)

BERTScore 用预训练向量算 token 级相似度,对同义改写比 n-gram 指标宽容;适合辅助对比,不替代人工评审。

提示词工程速查AI更新于 2026-10-13

BERTScore 思路是什么

BERTScore 用预训练语言模型把候选文本和参考文本都编码成向量,再按 token 级相似度算精确率、召回率与 F1。相比 BLEU、ROUGE 这类按字面 n-gram 重叠计算的指标,它对同义改写更宽容:换了说法但意思没变,分数不会掉得那么厉害。因此它适合做摘要、改写、翻译的辅助对比,用来替代「只看字面重合」的粗糙判断,但不适合单独用来判定正确性。

基本信息

来源BERTScore: Evaluating Text Generation with BERT(Zhang 等,2020)
计算方式逐 token 做贪心匹配,取最大相似度后聚合出 P / R / F1
适用平台Python 环境,bert-score 库;中文需选中文预训练模型或指定语言参数
口径要求向量模型、语言设置、聚合方式必须固定,否则分数不可比

典型使用场景

  • 摘要评测:同一篇文章多个模型输出,横向比较信息覆盖度
  • 改写与润色:判断改写是否保留原意,避免语义漂移
  • 翻译抽查:与回译、人工评审配合,作为快速筛查手段
  • 回归对比:版本迭代前后在同一批样本上跑,看趋势变化
  • 批量初筛:把明显离题的输出挑出来,减少人工评审量

使用示例

使用示例
# pip install bert-score
from bert_score import score
cand = ["本次变更调整了重试次数上限,改为 5 次"]
ref  = ["重试次数上限由 3 次调整为 5 次"]
P, R, F1 = score(cand, ref, lang="zh", verbose=False)
print(round(float(P), 4), round(float(R), 4), round(float(F1), 4))
# 输出仅作参考:必须配合人工评审与事实核对,不能单独作为通过标准

三个输出值怎么读

指标衡量什么偏高说明
Precision候选内容有多少能被参考内容匹配候选写的都在参考里,无明显加料
Recall参考内容有多少被候选覆盖候选覆盖较全,漏点少
F1两者调和平均覆盖与精准较均衡
低分样本语义漂移或漏点较多优先送人工复核,而非直接判失败
它衡量的是相似而不是正确:把参考里的数字改错、把「不应」写成「应」,向量相似度仍然可能很高。数字与实体必须另设比对检查,例如关键字段逐个核对。
分数只在同一套设置内部可比:换向量模型、换语言参数、换聚合方式都会整体平移。做版本对比时,把模型与参数写进评测记录,与分数一起存档。

易错点

  • 用中文文本跑英文向量模型会得到无意义分数,语言参数必须与实际文本匹配
  • 把它当作正确性指标,会漏掉事实错误——分数高但内容错的情况真实存在
  • 跨项目直接比较绝对分数:不同向量模型与参数下的分数不在同一量纲
  • 只看总分不看低分样本,错过最有价值的检查线索

数据来源与参考

  • BERTScore: Evaluating Text Generation with BERT(Zhang et al., 2020)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌