文本生成任务评估方法(三):实际业务中如何评估生成模型的好坏?

在前两篇文章中,我们已经介绍了基于统计方法的文本生成评估方案基于 bert 表征的语义匹配评估方法。但在实际业务当中,用上方法,并不能满足评估需求,业务中往往对生成的事实性有较高要求,并且希望每个用户看到的东西不一样,也就是对多样性有较高的要求。接下来,我们将介绍在实际业务中,如何评估生成模型的好坏。

多样性评估:distinct-n

应用场景

在实际应用当中,一般需要生成具有多样性的文案,保证千人千面。例如在电商中的商品标题生成、电商广告中商品文案生成,还有在智能客服场景下,如果一个问题,用户询问了好几次,如果每次回答的内容都一样,那用户体验就会很不好,如果每个轮次生成的答案不同,不仅可以解决用户的问题,也会提高在咨询过程中的满意度。

计算方法

  • 核心思路

    • 主要的想法就是判断同一个句子中,不同的 n-gram 个数,占总的 n-gram 片段的比例,这个比例越高,说明同一个句子的重复度约低;
    • 不同候选集之间也可以按照如上的思路,只是这个 n-gram 片段是所有句子的 n-gram
  • 计算方法

<math xmlns="http://www.w3.org/1998/Math/MathML"> D i s t i n c t ( n ) = C o u n t ( u n i q u e n − g r a m ) / C o u n t ( w o r d ) Distinct(n) = Count(unique n-gram)/Count(word) </math>Distinct(n)=Count(uniquen−gram)/Count(word)

其中,count(word) 表示回复中 n-gram 词语的总数量。

  • 参考代码
ini 复制代码
def get_map(tokens, n, dicts=None):
    token_dict = {}
    if dicts is not None:
        token_dict = dicts
    
    lens = len(tokens)

    for i in range(0, lens - n +1):
        ngram_token = "".join(tokens[i:(i+n)])

        if token_dict.get(ngram_token) is not None:
            token_dict[ngram_token] += 1
        else:
            token_dict[ngram_toal] = 1
    return token_dict

def distinct_ngram(pair, n):
    ngram_toal = 0
    ngram_dsitinct = 0

    pred_dict = {}

    for pred, - in pair:
        get_map(pred, n, pred_dict)
    
    for k, v in pred_dict.items():
        ngram_toal += v
        ngram_dsitinct += 1
    
    return ngram_dsitinct/ngram_toal

# 1-gram
distict1 = distinct_ngram(lists, 1)

人工评测方法

人工评测的方法

人工评测的方法也有很多种,例如:

  • 打分法: 直接让一个标注人员根据标准打分
  • 投票法: 三个人,每个人打分后取平均
  • 对比法: 给出生成的和人工写的,让标注人员判断哪个是机器哪个是人工
人工评测标准

比起打分,大家可能更加关心"如何"打分,毕竟大家遇到比较头疼的是,好像自己也不是很确定评测的标准是什么。这里依照经验给大家一些建议,例如我们在做商品文案生成的时候,可以考虑:

人工评测维度 解释 指标(打分制度)
可读性 生成的句子不流畅、可读性较差; 0分
忠实度 生成的句子流程,无重复截断,但生成句子与输入描述不一致【输出的商品特性和输入「冲突】例如写的是高筒袜子,输出是低筒袜子; 1分
生成句子中存在部分不实信息 2分
语法正确 生成的句子流程、无重复截断、输入输出一致,无大毛病偶尔 存在语法问题,例如鞋子适合搭配鞋子这种 3分
无事实性错误,卖点比较多 生成的句子流程、无重复截断、输入输出一致;无语法错误,无事实性错误(即不存在和商品本身特性冲突的描述) 4分
具有吸引力、有一定的创作 在4分的基础上,有一些额外信息,如更吸引人的文案、输入信息不具备的特性描述(但这些特性是正确的、符合商品客观事实的 5分

除了上面的信息,可以结合业务的特性再加入需要的评估方面

总结

至此,我们已经介绍了基于统计方法,以 BLEU为代表的统计评估方法、以 bert 表征做语义相似度评估的向量方法、多样性评估的自动化方法、还有人工评估方法。 目前,机器翻译任务会看 BLEU,学术界看的比较多。在生成任务中,多样性评估、人工评估依然占据主导地位。人工评测依然有很多可以探索的点,本文给出了自己在实战中的一些经验,希望能给大家一些帮助和启发。

相关推荐
Power202466629 分钟前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
数据猎手小k32 分钟前
AIDOVECL数据集:包含超过15000张AI生成的车辆图像数据集,目的解决旨在解决眼水平分类和定位问题。
人工智能·分类·数据挖掘
好奇龙猫38 分钟前
【学习AI-相关路程-mnist手写数字分类-win-硬件:windows-自我学习AI-实验步骤-全连接神经网络(BPnetwork)-操作流程(3) 】
人工智能·算法
沉下心来学鲁班1 小时前
复现LLM:带你从零认识语言模型
人工智能·语言模型
数据猎手小k1 小时前
AndroidLab:一个系统化的Android代理框架,包含操作环境和可复现的基准测试,支持大型语言模型和多模态模型。
android·人工智能·机器学习·语言模型
YRr YRr1 小时前
深度学习:循环神经网络(RNN)详解
人工智能·rnn·深度学习
sp_fyf_20241 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-11-01
人工智能·深度学习·神经网络·算法·机器学习·语言模型·数据挖掘
多吃轻食1 小时前
大模型微调技术 --> 脉络
人工智能·深度学习·神经网络·自然语言处理·embedding
香菜大丸2 小时前
链表的归并排序
数据结构·算法·链表
jrrz08282 小时前
LeetCode 热题100(七)【链表】(1)
数据结构·c++·算法·leetcode·链表