查看原文
其他

【NLP-ChatBot】搜索引擎的最终形态之问答系统(FAQ)详述

小Dream哥 有三AI 2020-09-08

本篇介绍聊天机器人中出现的比较早的一种:问答系统。问答系统跟检索技术很相似,基本的功能就是,用户可以向系统咨询信息,系统通过“检索”,向用户返回精准、有效的信息。所以,常常有人说,问答系统是搜索引擎的最终形态。


作者&编辑 | 小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)深度学习语义匹配


语义匹配笔者之前有介绍相关的代表性论文,感兴趣的同学可以仔细看看,非常有好处:


【每周NLP论文推荐】 介绍语义匹配中的经典文章


语义匹配的技术,从早期的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进入一个全新发展高度。你怎么不深入的了解?


转载文章请后台联系

侵权必究

往期精选


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存