文本生成任务评估方法(二)

上一篇文章 中,我们已经介绍了文本生成基于统计的集中评测方法:BLEU、Rouge、Meteor、TER 等方法。除了这些基于统计的自动评测方法,随着 word2vec 技术的兴起,各种基于语义表示的评测方法也逐渐被提出,接下来,我们就介绍一些基于语义表示的评测方法。

基于语言模型的评估方法: PPL

应用场景

PPL(困惑度)一般用于评价语言模型,算的是一个句子流畅度的概率。正常来说,我们在训练一个生成模型的时候,最后都能得到 ppl的值。

计算方法

PPL 给定句子 S,包含 了 N 个单词 w1,w2,...,wN,则语言模型判断产生第 i 单词的概率为 p(wi) = p(wi|w1, w2, ...wi−1),语言模型越好,产生句子的概率越大,本质上就是在计算一个马尔科夫链的概率。

  • 困惑度计算方法:

P P L = P ( w 1 , w 2 , . . . w N ) ( − 1 / N ) PPL=P(w1,w2,...wN)^{(-1/N)} PPL=P(w1,w2,...wN)(−1/N)

P = ∏ i = 0 n p ( w i ∣ w k , 0 < = k < = i ) P = \prod \limits_{i=0}^{n} p(w_i|w_k,0<=k<=i) P=i=0∏np(wi∣wk,0<=k<=i)

其中,P 代表 P(w1, w2, ...wN ) 的计算方法,P 表示当前词序列构成一个自然语言句子的概率,用每个位置对应词的采样概率之乘表示。其实,困惑度本质上是在算句子的平均交叉熵。

  • 离线评估方法
    • 需要先训练一个 indomain 的 language model
    • 利用训好的language model,做 inference 做模型概率评估

基于词向量表示

应用场景

词向量的表示评估方法,是计算句子中词向量的距离,评估是否相似。但实际应用中,比较少用这种方法来评估。因为一般训练模型的时候,我们已经能得到一个比较好的表示了,并且是 in-domain数据训练的表示,这会比直接用词向量表示效果更好。因此下面简单介绍一下这种方法,作为了解即可。

评估方法

基于词向量的表示,其实是在word2vec 技术兴起之后,被提出的一种评估方法。因为传统的统计指标,只能根据句子判断评估相似度,没有语义方面的度量。而 word2vec 将词从离散空间,表示到一个低维连续空间,用向量的方法表示词语,并且相似词语在空间中的距离更近。

embedding average

embedding average 方法是比较常见的一种方法,思路也比较简单,就是先算出句子中,每个词向量的加权平均,然后得到句子表示,再利用余弦相似度来计算两个句向量之间的相似度。

  • 计算方法

e r = ∑ w e w / ∣ ∑ w e w / ∣ e_r = \sum_{w}e_w/|\sum_{w}e_w/| er=∑wew/∣∑wew/∣

c o s = e r ∗ e g cos = e_r * e_g cos=er∗eg

  • 最终cos余弦计算句子相似度。e_r 一般用 word2vec 直接获取词向量。

基于bert表示的评估方法

应用场景

bert 的提出,是nlp发展史的一个里程碑。由于 bert 强大的表征能力,自然会想到利用 bert 来评估文本生成,希望 bert 利用强大的表征和理解能力,达到与人工评测接近的水平。可以用于各种生成、翻译的任务;但对image多模态下的评估任务表现比较差一点。

方法介绍

bertscore
  • 核心思路

    • 整体想法就是利用 bert 做表征提取,然后计算两个句子的相似矩阵,用相似矩阵做最大似然的加权平均得到相似度。这里权重引入了idl的方法。
  • 计算方法

    G b = ∑ x i m a x X i ∗ X j T ∗ i d f ( x i ) / ∑ x i i d f ( x i ) G_{b} = \sum_{x_i} max X_i*Xj^T *idf(x_i)/\sum_{x_i}idf(x_i) Gb=∑ximaxXi∗XjT∗idf(xi)/∑xiidf(xi)

    i d f ( w ) = − l o g 1 / M ∗ ∑ ∏ w ∈ x i idf(w) = -log1/M *\sum \prod w∈ x\^{i} idf(w)=−log1/M∗∑∏w∈xi

    其实就是两个句子的点积,加上了一个 idf 的权重。

  • 应用

    • 安装:pip install bert-score
    • 还可以看相似度矩阵: plot_example(cands[0], refs[0], lang="en", rescale_with_baseline=True)
    • 计算 p、r、f1
arduino 复制代码
from bert_score import score


with open("hyps.txt") as f:
    cands = [line.strip() for line in f]

with open("refs.txt") as f:
    refs = [line.strip() for line in f]

P, R, F1 = score(cands, refs, lang='en', verbose=True)

除了 bertscore 之外,还有一些一些将 BLEU 和 bertscore 思路融合的方法, 例如 BlueRT,将bleu、rouge、meteor等信息作为预热信息加入到模型训练过程,可以更好的增强文本的鲁棒性,此外不是直接算乘积,而是将一个句子过一个线形层,再和另一个句子算相似度。

总结

本文介绍了三种不同于统计方法的文本评估思路,这三种思路其实也代表了 nlp 技术发展的历程: 从语言模型、基于 word2vec 的词向量表示、基于 bert 的句子表征。神经网络的兴起,是的评估任务不再只是关注流畅度和词片段,更加关心整个句子的含义,是否有被机器清晰表达出来。

然而在实际业务评测中,发现目前的句子表征,对相似但语义不同的句子,很难评估是否语义相近。因为模型还不能完全取代人类评估,对比较复杂的场景很难制定评测标准。因此还需要针对实际业务,做一些评估标准的制定,更好的对模型的能力、可用性做公正的判断。

在下一篇文章中,我将介绍一些在实际业务场景中,常用的评估方法。

相关推荐
迪康Defender7 分钟前
AI 重构终端安全运营:智能分析中枢 AI Insight 模块架构与落地场景深度解析
运维·网络·人工智能·其他·安全·重构·架构
IPHWT 零软网络11 分钟前
技术方案分享|AI Agent 赋能 IVR 导航,解决传统语音呼叫系统交互瓶颈
人工智能·通信系统·rag·ivr·aiagent·智能语音·语音导航
leijiwen14 分钟前
《花尖墨 · 果域宇宙》电影三部曲
人工智能·saas·paas
番茄炒鸡蛋加糖19 分钟前
主流 AI 框架 + RAG 落地实战
人工智能·rag·springai
哈__22 分钟前
面向AI智能体的数据库专业技能包:将DBA工程经验封装为可调用能力
数据库·人工智能·dba
leisoo809734 分钟前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
u01030552737 分钟前
长株潭AI节能应用构建核心方案
人工智能
ACP广源盛139246256731 小时前
蚂蚁百灵 Ling‑3.0‑flash 开源 + 昇腾 0‑Day 原生适配@ACP#GSV9001E 在国产算力矩阵中的机会与落地场景
大数据·人工智能·分布式·单片机·嵌入式硬件
小柯南敲键盘1 小时前
跨马翻译:跨境电商批量图片翻译与视频字幕一站式工具
人工智能·python·音视频
微硬创新1 小时前
老旧产线改造:耐达讯自动化16路4‑20mA转PROFINET的工程实践
人工智能·网络协议·自动化·信息与通信