BERTScore 用预训练语言模型的 contextual embedding 衡量候选文本与参考文本的语义相似度,输出 Precision、Recall、F1 三个标量。相比 BLEU / ROUGE 的 n-gram 字面匹配,它对同义改写更宽容,适合开放生成质量评估的补充指标。
段末注释:BERTScore 在 token 级做 embedding 余弦匹配,再用 greedy 或 optimal matching 聚合为句级 P/R/F1;默认常用 RoBERTa 等模型提取向量。
系列索引:微调评估指标导读
一、直观含义
对候选句 ( \hat{x} ) 与参考句 ( x ):
- 用 BERT/RoBERTa 等得到每个 token 的上下文向量
- 候选 token 与参考 token 之间算余弦相似度矩阵
- Precision:每个候选 token 在参考侧找最相似 token,取平均(候选是否「说在点子上」)
- Recall:每个参考 token 在候选侧找最相似 token,取平均(参考是否「被覆盖到」)
- F1:P 与 R 的调和平均
人话:不看字面是否一样,而看「意思像不像」。
二、使用场景与所需数据
| 场景 | 适用性 |
|---|---|
| 对话回复 / 摘要(允许 paraphrase) | 高 |
| 翻译(同义表达多) | 中 — 仍常与 BLEU 并用 |
| 短标签分类 | 低 — 用 Accuracy / F1 |
| 事实型 QA(答案短且固定) | 中 — EM 更严,BERTScore 作补充 |
| 代码生成 | 不适用 |
数据要求:((\text{candidate}, \text{reference})) 文本对;可多参考时对每个参考算分再取 max(与 ROUGE 类似)。
三、计算方式
3.1 Token 级相似度
设候选 token 嵌入 (\hat{\mathbf{x}}_i),参考 token 嵌入 (\mathbf{x}_j),余弦相似度:
$$
s_{ij} = \frac{\hat{\mathbf{x}}_i^\top \mathbf{x}_j}{|\hat{\mathbf{x}}_i| |\mathbf{x}_j|}
$$
3.2 句级 Precision / Recall(greedy matching)
$$
P = \frac{1}{|\hat{x}|} \sum_i \max_j s_{ij}, \quad
R = \frac{1}{|x|} \sum_j \max_i s_{ij}
$$
$$
F1 = \frac{2PR}{P+R}
$$
可选 IDF 加权:常见词权重低、内容词权重高,使分数更关注信息量大的 token。
3.3 代码
1 | import bert_score |
中文需选中文预训练模型(如 bert-base-chinese)并固定 lang="zh"。
3.4 与 BLEU / ROUGE 数值尺度
BERTScore F1 通常在 0.85~0.95(同语言、高质量生成)区间,与 BLEU 0~100 不可直接对比。只在同一工具链、同一 backbone 下看 delta。
四、如何解读
| 模式 | 解读 |
|---|---|
| BLEU 低、BERTScore F1 高 | 同义改写多,字面重叠少但语义接近 |
| BLEU 与 BERTScore 双低 | 语义与措辞均偏离参考 |
| 微调后 BERTScore R ↑ | 生成更覆盖参考要点(摘要类) |
| 微调后 BERTScore P ↓ R ↑ | 可能变「啰嗦」——覆盖多了但冗余 |
与人工评价:BERTScore 与人工相关性通常优于 BLEU,但仍不及人工对事实一致性、连贯性的判断。
五、局限性与常见误用
- 不检测事实错误:语义向量相似仍可能「流畅地胡说」。
- 依赖 embedding 模型:换 RoBERTa / DeBERTa / 中文 BERT,分数不可比。
- 长度偏差:极短句 embedding 不稳定;极长句需截断,丢失尾部信息。
- 多参考需 max 聚合:实现不一致会导致数值差异。
- 计算成本:比 BLEU/ROUGE 高,需 GPU 批量算 embedding。
- 跨语言:候选与参考不同语言时默认模型不适用,需 multilingual 模型。
- 与 train loss 无直接对应:SFT loss 降不保证 BERTScore 升。
六、与其他指标的关系
| 指标 | 对比 |
|---|---|
| BLEU | 字面 n-gram 精确率;BERTScore 语义级 |
| ROUGE | 字面召回;BERTScore recall 为 embedding 召回 |
| Exact Match | 最严字符串匹配 |
| MoverScore / BLEURT | 同类语义指标;BERTScore 最常用、工具链成熟 |
| Invalid 预测率 | 格式失败与语义相似度无关 |
七、实践建议
- 开放生成微调:BLEU + ROUGE-L + BERTScore F1 三角报告,附人工抽检。
- 固定
model_type与lang,写入实验 config。 - corpus-level 报告均值 ± 标准差;个案分析看 P/R 谁拖后腿。
- 事实敏感域(医疗、法律)不能单靠 BERTScore 上线,需领域 checker 或人工审核。
- 批量评估时用
batch_size加速;长文本先截断到模型 max length 并注明策略。