【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述
本篇介绍聊天机器人中出现的比较早的一种:问答系统。问答系统跟检索技术很相似,基本的功能就是,用户可以向系统咨询信息,系统通过“检索”,向用户返回精准、有效的信息。所以,常常有人说,问答系统是搜索引擎的最终形态。
作者&编辑 | 小Dream哥
1 什么是问答系统
我们之前介绍过,按照应用场景的不同,聊天机器人可以分为问答系统,对话系统以及闲聊机器人三类。今天我们就来详细讲一讲其中的问答系统。
问答系统是基于用户的问题,给定一个回答,不涉及到多轮对话。通常用于智能搜索,智能家居中的家电控制等场景。问答系统往往不需要调用业务能力,只需要完成对用户问题的匹配及回答。
我们之前介绍过,问答系统的任务其实就是,对用户的输入进行相似度或者相关性计算,然后在相应的FAQ库里,寻找该用户输入对应的答案,并返回给用户。
2 问答系统(QA)中的语料库
通常,一个问答系统,都是针对某一个领域的。例如,一个淘宝卖家的问答系统,针对的是买家常问的商品类型和价格信息问题作出回答。
因此,要构建一个问答系统第一步就是整理FAQ库。一个FAQ库应该如下的内容:
1.标准问。标准问是问答系统设计者设计的标准问题,例如,“***商品的价格是多少?”。标准问的个数,决定了问答系统的规模,通常由业务专家给定。
2.相似问。一个标准问通常会对应多个相似问,与标准问表达相同的意思,但往往会不那么规范,较口语化,相似问通常要求覆盖面越广越好。例如,“****商品多少钱呀?”。相似问早期由业务专家拟定,数据师扩写,后期会不断修缮、规整和增加。
3.答案。一个标准问对应一个答案,返回给用户。由业务专家拟定。
FAQ库的质量,对于一个问答系统非常的重要,但是FAQ库的建立和维护往往都是一件极其费时费人力的事情。当一个FAQ库规模变大时,相似问之间的界限开始变的迷糊,会给算法带来非常大的挑战;另一方面,当FAQ库规模很大时,后期的维护也变得非常的困难。例如,当系统出现bad case,数据师很难判断bad case出现的原因,无法判断是哪条标准问对应的相似问加错了,从而很难修改。
对于一个问答系统而言,高质量FAQ库需要建立的时候就异常用心,通常需要业务专家和算法工程师通力合作;在使用时也需要倍加用心的维护,这时,需要培养多位既了解算法特性,又熟悉业务场景的数据师。这大概是目前生产中大部分问答系统采用维护方案了。
3 问答系统Q-A的匹配方式
在问答系统中,模型算法的任务其实就根据用户输入的问题匹配到相应的答案。这看起来是个简单的问题,实际上不然。
一方面,一个标准问,用户可能的问法有很多,很多时候都无法预料,需要不断的完善;另一方面,FAQ库的规模通常很大,标问数目可以达到数万,相似问的数据可能就更多了。这么大数目的预料,长度不一,算法难度很大。
模型的训练过程,其实就是让模型能够学习到问题-答案(Q-A)对之间的联系,或者Query集的特征。如下图所示,是QA中匹配用户query的模式。
由此可知,目前QA系统的实现,主要有以下三种方式:
1.计算用户输入Query和Question的相似度。通过计算用户输入Query与FAQ语料集中Question之间的相似度,选出相似度最高的Question,再通过Q-A map找到相应的答案返回给用户。
2.计算用户输入Query和Answer的之间的相关性。通过计算用户输入Query与FAQ语料集中Answer之间的相关度,选出相关度最高的Answer,返回给用户。
3.结合用户输入Query和Answer的之间的相关性以及用户输入Query和Question的相似度。通过结合相关性和相似度,选出最匹配的Answer,返回给用户。
4 问答系统中匹配的算法
由上节可知,问答系统中的匹配可以归结为query与FAQ库中标问和相似问的相似度计算与query与FAQ库中答案的相关性计算。总的来说,目前相似度或相关性计算有下面的几种方式。
1)规则匹配
也许有读者会觉得很惊讶,都9012了,还有人用规则匹配来做机器人?其实不必惊讶,目前,很多机器人都有规则匹配的部分,它可控,高效、易于实现。
我这里介绍一种规则匹配的方式,也有人称为句式法。所谓句式法,就是针对FAQ库中的标问和相似问进行分词、提炼出大量的概念,并将上述概念组合,构成大量的句式,句式再进行组合形成标问。例如,标问“华为mate30现在的价格是多少?”,拆出来“华为mate30”是cellphone概念,“价格是多少”是askMoney概念,“现在”是time概念,那么“华为mate30现在的价格是多少?”就是cellphone+askMoney+time。用户输入"华为mate30现在卖多少钱?"进行分词,可以得到相同的句式和概念组合,就能够命中“华为mate30现在的价格是多少?”这个相似问了。
2)深度学习语义匹配
语义匹配笔者之前有介绍相关的代表性论文,感兴趣的同学可以仔细看看,非常有好处:
语义匹配的技术,从早期的DSSM,利用词袋模型,计算句之间的相似度;到后面利用LSTM-DSSM来捕捉长时间序列的语义信息;再到现在的基于BERT的语义相似度计算与匹配。本质上,其实都是提取句子的语义特征,再通过数学运算计算相似度。
5 KBQA介绍
Knowledge Based Question&Answer(KBQA),是一种基于知识体系的问答系统,现在知识库更多的是指知识图谱了。
KBQA回答用户问题的方式通常有如下两个步骤组成:
1.利用NLU模块进行语义理解和解析,包括意图识别,实体识别,实体关系识别,实体匹配等。
2.利用知识图谱进行查询、推理得出答案
搭建KBQA中最重要最关键的一步就在于知识图谱的搭建。知识图谱对于绝大部分NLP任务都有极大的加成,个人认为是当前最有价值的NLP方向。
总结
搭建一个问答系统是非常耗费时间和人力的事情,不管是传统的QA,还是近来的KBQA。对传统的QA,FAQ库的建立和维护都异常费事;对于KBQA,知识图谱的搭建,就是一个难度巨大的工程。
近期我们会在知识星球实现问答系统,具体实现和优化,感兴趣扫描下面的二维码了解。
读者们可以留言,或者加入我们的NLP群进行讨论。感兴趣的同学可以微信搜索jen104,备注"加入有三AI NLP群"。
下期预告:聊天机器人-对话系统介绍
知识星球推荐
扫描上面的二维码,就可以加入我们的星球,助你成长为一名合格的自然语言处理算法工程师。
知识星球主要有以下内容:
(1) 聊天机器人。考虑到聊天机器人是一个非常复杂的NLP应用场景,几乎涵盖了所有的NLP任务及应用。所以小Dream哥计划以聊天机器人作为切入点,通过介绍聊天机器人的原理和实践,逐步系统的更新到大部分NLP的知识,会包括语义匹配,文本分类,意图识别,语义匹配命名实体识别、对话管理以及分词等。
(2) 知识图谱。知识图谱对于NLP各项任务效果好坏的重要性,就好比基础知识对于一个学生成绩好坏的重要性。他是NLP最重要的基础设施,目前各大公司都在着力打造知识图谱,作为一个NLP工程师,必须要熟悉和了解他。
(3) NLP预训练模型。基于海量数据,进行超大规模网络的无监督预训练。具体的任务再通过少量的样本进行Fine-Tune。这样模式是目前NLP领域最火热的模式,很有可能引领NLP进入一个全新发展高度。你怎么不深入的了解?
转载文章请后台联系
侵权必究
往期精选
【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述相关推荐
- 对话系统-“问答型”单轮对话:FAQ检索式对话系统【步骤:①用户意图判断、②文本检索召回、③文本匹配计算排序】【搜索引擎的最终形态】
一.基本概念 文本匹配:计算文本之间的相似度,主要分为两大类: 1)基于句子向量表示的相似度模型(适合初始召回): 2)基于词级别匹配的相似度模型(适合对召回结果重排) 问答系统:信息检索的一种高级形 ...
- 安卓隐藏摄像_【快讯:诺基亚发布三款安卓机;全面屏手机的最终形态,目标是去掉摄像头;iPhone 打电话不息屏或挂断电话后不亮屏是什么问题?】...
资讯一 [诺基亚发布三款安卓新机:带来了可拆后盖设计] 2月25日,诺基亚在MWC 2019正式召开发布会,发布了诺基亚4.2.诺基亚3.2.诺基亚1 Plus三款全新安卓机型. 其中诺基亚4.2是三 ...
- NLP 于搜索引擎的关系
本文详细描述了周明如何在NLP进步中探索. 课程导师:雷鸣, 天使投资人,百度创始七剑客之一,酷我音乐创始人,北大信科人工智能创新中心主任,2000 年获得北京大学计算机硕士学位,2005 年获得斯坦 ...
- 自然语言处理(NLP)-4.3 BERT、T5与问答系统(BERTT5Question Answering)
1.概述 1.1 问答系统(Question answering) 基于上下文:输入问题和文本,输出答案:如阅读理解 封闭系统:直接输入问题,输出答案:如聊天机器人 1.2 迁移学习(Transfer ...
- OnLine非游戏最终形态
前阵子听朋友说,巴哈姆特网站上出了一款新游戏叫<小朋友齐打交OnLine>,不禁哑然失笑.这年头,连童年游戏都OnLine了,还有什么不可以OnLine的? 与单机游戏相比,网络游戏的确是 ...
- 中心化金融机构频现信任危机?DeFi或成金融最终形态
自今年的3月8日以来,以加密友好银行Silvergate Bank,以及在美国科技领域地位举足轻重的银行业巨头硅谷银行(SVB)相继出现流动性危机,并触发破产后,传统金融业迎来重创并且信任缺失. 导致 ...
- 【年终总结】2019年有三AI NLP做了什么,明年要做什么?
时间不紧不慢的,从2019年6月中旬有三AI公众号开始发布自然语言处理(NLP)相关的文章以来,已是半年有余. 回头看看,NLP系列文章基本维持在了一周一到两篇的更新频率,基本上覆盖了NLP所需要聊到 ...
- 【信息抽取】NLP中关系抽取的概念,发展及其展望
事物.概念之间的关系是人类知识中非常重要的一个部分,但是他们通常隐藏在海量的非结构文本中.为了从文本中抽取这些关系事实,从早期的模式匹配到近年的神经网络,大量的研究在多年前就已经展开. 然而,随着互联 ...
- 【NLP机器学习基础】从线性回归和Logistic回归开始
古语常云:"大道至简",万事万物纷繁复杂,最终却归至几个最简单的道理.我常常在想,如今很火的AI领域是否也是如此.将AI真正学懂学会的过程就像一场遥不可及的漫长攀登,起始于晦涩难懂 ...
最新文章
- 随便说说---java初级学习路线
- Zabbix 3.0 安装
- 清华大学全面审查文科博士论文!
- Bootstrap3 轮番插件的使用方法
- 《移山之道-VSTS软件开发指南》---读书笔记
- Web开发中的主要概念
- Java面试锦囊送给你!大厂门槛随便跨!
- Matlab调用系统命令行利用Internet Download Manager(IDM)实现批量下载
- 比较热门好用的开源中文分词软件系统有哪些?
- Activiti7的进阶使用
- 推荐子龙山人的emacs的教程
- 计算机遥感毕设选题,遥感硕士毕业论文题目
- C#编写的AccessHelper
- 二叉树的遍历和总结--C和C++
- 农夫山泉(数据范围是亮点)
- 01-什么是架构、架构的目的
- “当前不会命中断点。还没有为该文档加载任何符号“解决方案
- Rethinking Image Aesthetics Assessment:Models,Datasets and Benchmarks
- DDR4之地址空间、颗粒容量、page size计算
- DeFi之道访谈:如何参与Web3?哪些细分赛道值得关注?
热门文章
- 为什么Java中1000==1000为false,而100==100为true?
- 什么是缓存一致性问题?如何解决呢?
- Java 循环队列原理与用法详解
- java基础之 “==”和“ equals”以及instanceof的区别
- Eclipse导入项目常见问题----乱码问题03
- sqlite 统计每张表的记录数_Excel单页式人事管理表,档案记录,自带查询统计,简单实用...
- (Spring)Spring的使用
- (JAVA学习笔记) 异常处理
- 阿里云的linux服务器简单部署网站80端口
- JavaScript中的原型,对split方法的重写