如何构建一个问答机器人(FAQ问答机器人)

开篇

下面的主要内容摘自腾讯知文的算法负责人的演讲,主要描述了腾讯知文问答系统的主要框架。

问答类型

第一种类型,任务驱动型。这种类型通常是用户希望去完成一些任务,比如查天气、查汇率等。

第二种类型,解决用户信息获取类的问题。这种类型也是我们这次分享的重点,我们将主要在这点展开。这也是目前业界落地最多的一种问答系统类型。

第三种类型,通用闲聊型。比如微软的小冰、苹果的 Siri 都支持通用闲聊,通用闲聊的加入会使对话系统更富于人性化,也可以加入个性化信息、用户画像信息,包括前面教授们提到的情感信息。

问答领域的数据

第一种,基于标准的、结构化的知识,比如说 FAQ 和 KG。FAQ 是常见问题解答,KG 是组织好的知识图谱,这两种都是比较结构化的数据类型。

第二种,数据以非结构化的形式存在,比如说表格、文档。

第三种,多模态、跨媒体问答,比如说 VQA,或可能存在视频、音频问答的语料库。

ps:就我的实习经验来说,在企业里往往是使用第一种数据去构建问答机器人的,同时,由于绝大多数的企业是没有能力构建KG的,所以大部分就FAQ的机器人。

通用的FAQ框架

由于图片比较模糊,所以就不放图了。

首先是问题处理模块,这一模块的工作包括查询、问询改写,错词纠正,同义词替换。第二步是召回,即在 FAQ 里召回文档,最主要的目标是召回要快,召回率要很高,准确性可以比较低,可以召回不那么相关的信息。之后,我们会做一个匹配。

ps: 和搜索框架的区别
问答系统追求的是top-1的准确度,最主要的是匹配

快速召回的方案

第一种,基于词汇计数(Lexical term counting)的方法。大家都很熟悉这类方法,它基于字面匹配,好处在于很简单,对长尾的词有很好的鲁棒性,只要在标准问里有出现过,做匹配的时候一定可以召回。但是它的缺点很明显,它基于符号,没有语义层面的理解,所以很难处理字面不同语义相近的表述。

第二种,基于语言模型,主要思想是用概率的方法来判断知识库里面的 FAQ 和用户问询在哪一种在概率上更为接近。它的实战表现更好一些,但是它对语言模型参数的优化非常敏感,所以要做很多平滑实验。

第三种,基于向量化的方法。我把用户的问询投射到这样的向量空间里去,把知识库的 FAQ 也投射到这样的向量空间里去,在向量空间里用距离的方法去做度量。目前存在很多种投射方案,比如基于矩阵的分解,可以把向量拿出来,还可以基于一些其他方法做向量化,向量空间算距离的时候也有很多种方法,比如用平均求和来算这两个点之间的距离。

WMD 是 2015 年的工作,它用了一些更加新的方法来算这种距离,这样的方法比简单的平均化求距离要更好一些。但存在一个问题,这种方法对多义性的解决不太好。

深度匹配的方案

这里可以参考我以往的博客
深度文本匹配的基本方法
深度文本匹配模型(一):k-nrm
深度文本匹配模型(二):Conv-knrm模型复现

现在有很多深度匹配的方式,最多的是监督匹配,在这当中有两类比较多的方法,一类是 Siamese 网络,一类是基于交互矩阵的网络

像 CNN 的 ARC-1 就是 Siamese 网络典型的例子,Siamese 网络比较直观,它的想法很简单,把两个输入用同样的编码器做一个表达,把表达做出来以后,可以用一个模块来做相似度的计算,它的特点是共享网络结构和参数。

基于交互矩阵的网络的不同之处在于,除了最终表达相关性度量时,中间某些词可能会有更强的交互,特别是在文档很长的时候。这一类型的网络和 Siamese 网络相比,在两个问句很短的时候打成平手,但是如果问题很长,包含了很多的内容,里面有一些关键信息,这一网络就会有更好的表现,当我们做好表达以后,会看这个表达里面每一个小的词组之间交互的情况。

业界心得

首先,要重视 Baseline,这一点非常重要。不要把 Baseline 搞得太复杂,因为要通过 Baseline 理解数据和问题。

第二,尽快地构建 pipeline。我们的 pipeline 是一整套系统,包括数据处理、模型训练、模型加载、模型预测、模型评价,特别要注意评价指标和整个流程的打通,只有建立 pipeline 才有迭代的基础,如果没有 pipeline,就没办法迭代,没办法评价模型,也没办法更新框架。

第三,没有免费的午餐,没有倚天屠龙刀,不存在一种可以解决所有问题的算法,算法一定有其适用的数据和场景。有了基准和评价标准,我们才可以尝试更多模型,才能知道模型在哪种条件下更加合适,做到扬长避短。

最后,要有领域相关的数据。领域相关的数据不只是指训练数据,也包括该领域的专家经验和知识,与该领域相关的框架和模型。就我们的经验来讲,领域数据的优化,比如清洗领域数据,或者构建领域词典、词表,这些方法带来的提升比较显著,甚至比模型带来的提升更加显著,所以要重视领域数据的工作。

猜你喜欢

转载自blog.csdn.net/Ding_xiaofei/article/details/81557004