引言

本文是七月在线《NLP中的对话机器人》的视频笔记,主要介绍FAQ问答型聊天机器人的实现。

模型的评估

我们如何评估模型的好坏?由于我们的数据集没有提供测试数据,所以我们很难评估模型的好
坏。如果我们要做非常严谨的评估,最好是能够制作一个验证数据集,包括训练数据中不存在的
新问题,与该问题最相近的已知问题,以及问题的答案。

虽然我们实现的是FAQ问答机器人,但实际上解决的是搜索问题,比如给定问题查找最相似问题的答案。

MRR

评估指标可以采用Mean Reciprocal Rank(MRR), 这是一个推荐系统的评价指标,也就是正确答案在推荐答案中的排名的倒数平均。

MRR的原理如下:
MRR=1∣Q∣∑i=1∣Q∣1ranki\text{MRR} = \frac{1}{|Q|} \sum_{i=1}^{|Q|} \frac{1}{\text{rank}_i} MRR=∣Q∣1​i=1∑∣Q∣​ranki​1​

假设给定一个问题,你知道它的正确答案是什么。模型会在整个数据集上进行搜索,它会给数据集中的每个问题打一个分数,我们就知道正确答案被模型排到哪个位置。
正确答案排名越高表示系统越好,MRR表示的是最佳答案排名的倒数。最佳答案排名是1到样本总数n,那么倒数是就是0到1之间的数值。然后对所有问题样本计算的该数值求平均,得到的还是0到1之间的数值。分数越接近1表示模型越好。

其代码实现如下:


def mean_reciprocal_rank(rs):"""Score is reciprocal of the rank of the first relevant itemFirst element is 'rank 1'.  Relevance is binary (nonzero is relevant).Example from http://en.wikipedia.org/wiki/Mean_reciprocal_rank>>> rs = [[0, 0, 1], [0, 1, 0], [1, 0, 0]]>>> mean_reciprocal_rank(rs)0.61111111111111105>>> rs = np.array([[0, 0, 0], [0, 1, 0], [1, 0, 0]])>>> mean_reciprocal_rank(rs)0.5>>> rs = [[0, 0, 0, 1], [1, 0, 0], [1, 0, 0]]>>> mean_reciprocal_rank(rs)0.75Args:rs: Iterator of relevance scores (list or numpy) in rank order(first element is the first item)Returns:Mean reciprocal rank"""rs = [np.asarray(r).nonzero()[0] for r in rs]return np.mean([1. / (r[0] + 1) if r.size else 0. for r in rs])

从注释中可知,rs = [[0, 0, 1], [0, 1, 0], [1, 0, 0]]表示正确答案的位置,比如第一个问题正确答案在位置3;第二个问题正确答案在位置2;第三个问题正确答案在位置1。

np.nonzero()返回非零元素的位置,可能有多个,因此返回的是数组。但这里实际上只有一个,nonzero()[0]得到它的位置。

rs = [[0, 0, 1], [0, 1, 0], [1, 0, 0]]
rs = [np.asarray(r).nonzero()[0] for r in rs]
rs
[array([2]), array([1]), array([0])]

这里表示我们只关注模型返回的前3个最相似问题,其中正确答案分别在位置3,位置2,和位置1。

np.mean([1. / (r[0] + 1) if r.size else 0. for r in rs])
0.611111111111111

如果某个结果中一个正确答案都没有,那么它的大小(size)就是0,得分就是0。否则得分为位置的倒数(索引才0开始,加1变成了位置)。

参考

  1. https://gist.github.com/bwhite/3726239

NLP中的对话机器人——模型的评估相关推荐

  1. NLP中的对话机器人——预训练基准模型

    引言 本文是七月在线<NLP中的对话机器人>的视频笔记,主要介绍FAQ问答型聊天机器人的实现. 场景二 上篇文章中我们解决了给定一个问题和一些回答,从中找到最佳回答的任务. 在场景二中,我 ...

  2. NLP中的对话机器人——问答机器人的应用场景

    引言 本文是七月在线<NLP中的对话机器人>的视频笔记,主要介绍FAQ问答型聊天机器人的实现. FAQ问答机器人 FAQ就是一些常见问题与回答,比如https://letsencrypt. ...

  3. 自然语言处理NLP星空智能对话机器人系列:第21章:基于Bayesian Theory的MRC文本理解基础经典模型算法详解

    自然语言处理NLP星空智能对话机器人系列: 第21章:基于Bayesian Theory的MRC文本理解基础经典模型算法详解 1,Bayesian prior在模型训练时候对Weight控制.训练速度 ...

  4. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类

    自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 基于BERT模型微调实现句子分类 目录 基于BERT模型微调实现句子分类案例实战 Installing the H ...

  5. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 GLUE MRPC

    自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 GLUE MRPC 目录 Microsoft Research Par aphrase Corpus(MRPC) ...

  6. 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 SRL

    自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 SRL 目录 The architecture of the BERT-based model SRL exper ...

  7. 自然语言处理NLP星空智能对话机器人系列:NLP on Transformers 101 GavinNLP星空对话机器人Transformer课程片段1:Transformer架构内部的等级化结构及其

    自然语言处理NLP星空智能对话机器人系列:NLP on Transformers 101 GavinNLP星空对话机器人Transformer课程片段1:Transformer架构内部的等级化结构及其 ...

  8. 自然语言处理NLP星空智能对话机器人系列:第4、5、6、7次星空智能对话机器人Zoom线上演示安排

    自然语言处理NLP星空智能对话机器人系列:第4.5.6.7次星空智能对话机器人Zoom线上演示安排 月是故乡明.祝福大家和家人中秋节一切喜悦圆满 由于过节等因素,需要把9月19号的在第4次星空智能对话 ...

  9. 自然语言处理NLP星空智能对话机器人系列:NLP on Transformers 101 第16章:Kaggle BERT比赛CommonLit Readability Prize赛题解析

    自然语言处理NLP星空智能对话机器人系列:NLP on Transformers 101 第16章:Kaggle BERT比赛CommonLit Readability Prize赛题解析 第16章: ...

最新文章

  1. 【剑道】用语中日对照
  2. python list 去重_Python中对列表list去重
  3. 学习JS的心路历程-函式(一)
  4. 【拔刀吧少年】之条件语句
  5. android点9图architecture
  6. 伦茨8400变频器面板按键说明_变频器调试笔记
  7. MySQL日期处理函数实现博客按年月份进行分组
  8. VS2010+Opencv-2.4.0的配置攻略
  9. ecq php,ecqx.sdgz.site网页GZIP压缩检测结果
  10. 小鹏的全语音车载系统什么名堂?
  11. Grunt安装与入门
  12. 使用 URL 读取网络资源
  13. android 新建桌面文件夹在哪里,添加并管理桌面文件夹
  14. scu(snoop control unit)
  15. 常用坐标系汇总(更新)
  16. Windows10 如何禁用或删除大的Hiberfil.sys和Pagefile.sys文件
  17. 单位半夜12点打电话给你,让你通知领导明天早上8点参会,而且要准备汇报,你会怎么做?
  18. python虚拟机管理系统_python 虚拟机 pdf
  19. 微信h5支付(php版) 2019
  20. 设计模式(四)责任链模式——责任链模式结构

热门文章

  1. 计算机音乐谱小螺号,小螺号歌谱
  2. python爬虫 慢慢买历史低价爬取 js逆向入门
  3. Learch_Einglish 需求
  4. 数据增强——HIKVISION
  5. 能能搜狗下拉框采集工具【长期更新】
  6. 使用ffmpeg对rtsp视频截图
  7. Tun/Tap接口指导
  8. 我的世界中国版服务器宠物系统,百变宠物,上天入地:《我的世界》中国版Hypixel服务器的神奇道具...
  9. P4921 情侣?给我烧了!
  10. 用python的turtle库给你画一个头像(猪头)