55

揭秘:对话机器人平台智能问答技术

 4 years ago
source link: https://www.tuicool.com/articles/6jEVrmn
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

文 |  吾来算法团队

整理 | 吾来君

前言

个人计算机的发展史要追溯到上个世纪90年代末,人们用键盘和鼠标向购物网站发送请求,购买心仪的商品,随后的十多年间,互联网飞速发展, 智能手机应运而生 ,人们开始习惯用触摸的方式更加灵活地操纵手机、Pad等设备,可与之进行交互的产品也稳步落地在数以百万计APP中,这些产品都是 基于GUI (Graphical User Interface)设计 的。

鉴于人类向外界发送指令的方式除了 用手做 (以键盘鼠标、触摸为代表),还可以 用嘴说 ,因此 语音控制设备 进行人机交互也开始进入人类探索的领域,然而让机器听懂人类的语言是一件十分困难的事,近几年随着深度学习的崛起,语音识别和自然语言理解的快速发展,为这一交互模式的流行创造了可能,相信不久的将来,人类会逐步迈入 CUI (Conversational User Interface) 时代 。

1

智能问答简介

在我们的生活中,智能对话被广泛应用在 客服、营销 等 重复性对话 频繁发生的场景,或者作为GUI的补充,为用户提供高效、个性化的体验,甚至是直接集成到智能音箱、智能家居、智能导航等硬件设备中,独立承载人机交互的重担,按照对话的智能程度,我们可以把 智能问答分为5个阶段 : 单 轮问答、多轮会话、意图推理、个性化以及情感互动 ,而从问答的种类来讲,我们又可以将其分为 Community QA、KBQA、TableQA、PassageQA、VQA 这5大类。

i2MnQjf.jpg!web

图1 智能问答领域分类[Duan 2017]

KBQA: 基于知识图谱的问答,所有的知识被组织成三元组的形式,比如 <姚明、妻子、叶莉> 这个三元组是知识图谱里的一条知识,当用户询问 “姚明的妻子是谁” 的时候,问答模型会将答案定位到 “叶莉” ;

TableQA: 知识是用表格的形式组织的,商家的产品信息用表格的形式存储,当用户询问关于某个产品的具体属性时,问答模型可以把用户的 自然语言转化成SQL查询语句 ,直接从数据库里 定位答案 ;

PassageQA: 阅读理解,它是基于文档的问答,我们的问答模型会基于用户的问题,将答案 定位 在文档的 某个段落、某句话甚至是某个短语 。

VQA: 基于图像或视频的问答,以上图为例,用户问 “这个女孩儿的脸被什幺挡住了” ,问答模型会告诉我们答案是 “香蕉” ;

Community QA: 从命名上来看,它是基于 社区知识的问答 ,比如一个读书论坛,底下有人在交流值得一读的人工智能书籍,在母婴论坛有人在讨论宝宝发烧了怎幺办?需要吃药吗?那幺这些对话内容都可以沉淀为知识,我们定义的Community QA就来源于这些场景,在不同的领域,我们通过 挖掘、或者收集、标注的方式 沉淀了一批知识,用问答对的形式把它们 组织 起来,在这批知识集合下,用户提问一个领域相关的问题,问答模型会告诉我们答案到底是什幺。

2

智能问答工程实践

面对智能问答的广泛应用,本篇文章以 如何搭建一套智能问答系统 为切入点,深入浅出介绍一下在 Community QA 上所做的尝试。

1

业务简介

我们再基于几个实际的例子看一下问答的使用场景:

第一类是常见的 客服场景 , 询问产品、询问业务、询问经验 ,这类场景比较泛,他会衍生在生活中的各个方面,客服机器人相比传统的客服,他永不打烊, 回答永远标准 ,而且面对各种刁钻甚至不友好的问题,都会 永远积极正面地给出响应 。

同时该类问答机器人进一步深化拓宽到领域,会孵化出某些领域通用的机器人,比如 HR领域 ,相信不同公司的HR,很大程度上面临的问题集合都是固定的,也就是说, 垂直领域的问答机器人是可以有效渗透并横向复制给不同企业使用的 。

在英语学习相关产品上 ,我们想给小孩报名英文课,但是不清楚课程内容和价格,那我们会问相关的问题,对于商家来讲,我们不仅是提问的人,还是潜在的商机,可能我们仅仅只想问一个问题,但是商家却希望能获得我们更多的信息, 电话、小孩年纪、上课意向 等,进而让我们留存下来最后能成功消费,类似的场景还有很多,我们把这一类应用场景叫 营销机器人 ,它是商务团队的好帮手,能在 多个平台自由切换 ,回答问题 标准且及时 ,最终往往能通过更小的人力投入,获取更多的 有效线索 。

2

问答建模

基于前面的例子,我们对问答场景有了更具体的画像,需要做什幺已经很清晰了,那幺 怎幺做呢 ,我们开始 尝试对该问题进行建模 。

首先是对知识的结构化表示:

用户问题我们用q表示;

一个问答对表示一条领域知识,我们把它叫做一个知识点 k i ;

答案我们定义为 a i ;

由于一个语义的问题可能有多种不同的表述方式,因此一个知识点的问题由多个不同的表述组成,这些表述都叫相似问 p ij ;

一个领域的知识库,由多个知识点构成;

ANfyMra.png!web

图2 知识库表示

我们为什幺要用这种方式来管理知识,不用图表、也不用表格? 实际上,知识的管理方式是来源于实际业务场景的,这种方式非常易于维护, 多个同义问题用一个知识点管理 ,也能 减轻维护答案工作量 ,同一知识点下的问题也将会是很好的训练数据。

现在有了领域内知识库,用户提问后,我们还需要一个 问答模型 ,这个模型能找到和用户query最匹配的问题,进而给出对应的答案,这里我们采用 检索+匹配+排序 的架构。

f2In6bA.png!web

图3 问答建模流程

下图是基于知识库和问答模型在 母婴场景 的应用举例:

3QjuIza.jpg!web

图4 QA应用举例

3

数据储备

vQveyqJ.jpg!web 图5 数据类型分布

在正式开始问答模型构建之前,我们需要 思考目前有哪些数据 可被我们使用,以及我们 需要什幺数据来支撑后续的工作 。

通用领域的 贴吧、豆瓣、微博、知道 等问答数据,可被用来训练 词向量 ,或是 统计共现、互信息词典 ; 人工标注的q/p对 ,可被用来训练 有监督的分类模型 ; 垂直领域的知识库 可被用来训练 领域相关的分类模型 ,也可用作 词向量的fine-tune ,当然也是有效的评估数据。

4

模型迭代

63a67fZ.jpg!web

图6 吾来QA架构图

吾来整体的QA架构图 如图6所示,下面我们简单介绍一下 历次迭代的思路 。

1. BoW+LR

第一次迭代我们只引入了 词袋(Bag of Words)模型 , 5维代表特征 。

Jaccard:q和p词交集个数与词并集个数的比值;

Coverity:最长公共子串特征,q和p最长公共子串在p中的占比;

Edit-Distance:最小编辑距离,q和p的最小编辑距离除以q、p长度的平均值;

TM:共现特征,基于bigram/trigram词典,计算q、p共现词平均score、共现词最高score的平均值、共现词去除相同词后最高score的平均值共3维特征;

MI:互信息特征,基于互信息词典,计算q、p两两词的互信息平均值;

上述特征集合,均由 大数据文本的统计特征衍生 而来,对 句子的语义表示能力较弱 。

2. BoW+WE+LR

第二次迭代我们给模型 引入了一定的语义表示能力 ,对于了解深度学习、自然语言处理的同学来讲, word2vec 在很多任务上都有着非常杰出的贡献,这一模型从 不同角度刻画了周围词和当前词的关系 ,经过训练后,我们能得到一份 词汇的向量表示 。

qqiqYbZ.png!web

图7 word2vec的2个模型

基于训练得到的词向量,我们 采用IDF对词向量进行加权平均 ,以此得到 q、p词粒度的句向量表示 ,并最终 通过余弦相似度来度量两者的语义相关性 。

eEbq6bY.png!web

图8 基于句子表示的w2v特征

通过余弦相似度给出的相似,本质上描述的还是两个词的相对一致,而且 word2vec不考虑 词序,余弦相似度大表示两个词搭配出现、或者和同一批词搭配出现的可能性较大,这一特征所显示出来的 弊端 就是 往往相似度高的2个词具有可替换性但却语义不完全相同。

比如q=“宝宝感冒怎幺办”,p=”宝宝发烧怎幺办”,”感冒”和”发烧”互相替换,句子依然具有合理性,而且由于他们经常在同一批词汇中搭配出现,具有比较相似的分布特征,相关性比较高,然而他们语义并不同。

接下来我们引入另一种语义度量方法: WMD (the Word Mover’s Distance) ,它刻画了 如何用最小的代价将q中的每个词以不同权重匹配到p中每个词上 ,这是一种基于句子间的交互来表示语义的方法。

RJBzuqu.png!web

图9 基于句子交 互的WMD 特征

在利 用WMD计算 q/p的相关性时,我们会对句子进行切词、去停, 对于q中的每个词,找到p中的另一个词,进行语义转移 ,转移的代价我们用两个词汇间的 word2vec余 弦相似度来度量,当2个词语义较相近时,我们可以多转移一点,如果语义相差很大,我们可以选择少转移或者不转移,最后 使得所有转移的加权和最小 ,这里加权采用词频作为特征,具体示例如图10所示。

7ZBVfyn.png!web

图10 the Word Mover’s Distance (WMD)

由于 WMD 也高度依赖 word2vec 词向量,因此上文提到的word2vec cosine特征所有的不足, WMD 特征依旧存在,既 没有考虑语序信息 ,同时 对OOV (Out of Vocabulary)情况也很不友好 , 语义泛化能力弱 , 相似意图区分能力差 。

3. BoW+WE+SE+fine-tune

前两次迭代都没有考虑知识库内的数据,比较适 用于无语料或者语料较少的知识库 ,当知识库具有一定的规模后,正如前面提到的, 同一个知识点下的相似问,将是很好的训练数据 。

我们采用了 fastText模型 ,充分利用知识点中的问题语义相同/相近这个事实作为监督信号,训练一个分类模型,直接用一个问题的词去预测问题所属的知识点。

fastText是Tomas Makolov为了弥补word2vec的某些不足而提出的改进方案,和word2vec中CBOW不同的是, 它的输入不再是上下文,而是一整个句子 ,同时它 接收子词和ngram特征 , 能捕捉到更多的信息。

比如单词的前后缀,以及词的语序特征等。相比其它深度学习模型,fastText 结构简单 ,本质上是一个线性模型,不太适合处理较长或者线性不可分的样本,而 对于偏线性的短文本分类任务却比较合适 ,能在较少训练集合的基础上,非常快速地得到不错的效果。

aQb2yqb.png!web

图11 fastText模型结构

同时fastText在训练过程中也会产生一份词向量,经实验验证,基于知识库训练fastText的词向量对基于大数据训练的word2vec词向量进行fine-tune,能一定程度上 提升该领域的问答效果 。

4. BoW+WE+SE+DM+fine-tune

前面我们利用一个知识库的相似问语义相近作为监督信号,从中抽取出了一个知识点的语义信息,但我们 最终的目标是判断用户输入和相似问之间的相关性 ,这里我们使用一个 深度学习的模型ESIM (Enhanced LSTM for Natural Language Inference) ,利用要比较的两句话的监督信号来训练模型,观察句对的交互对模型的影响。

图12 ESIM模型架构(左侧)

上图是ESIM的网络结构,它在众多短文本分类任务中都有不错的表现,主要在于 输入2句话分别接embedding+BiLSTM , 利用BiLSTM学习一句话中的word和它上下文的关系后,在进行inference之前,会 利用attention操作计算2个句子word之间的相似度来更新embedding ,也就是说比较的两句话在模型训练中产生了交互,相比其它的类似网络只在最后一层求距离来讲,这种交互的影响能学到 更全局的信息 。

5. BERT+MTL+fine-tune

当然,学术界是在不断变化的,对于效果较好的模型,我们也需要进行尝试,寻找适合在工业界落地的条件和场景。

BvmMr2n.jpg!web

图13 BERT+多任务学习MTL框架图

在 BERT 横扫了11项NLP测评任务的效果后,我们把它应用在知识点分类任务上,期望 利用 BERT本身 的优势 ,来 提升分类任务的效果 。同时我们还基于知识库数据,在BERT的基础上, 通过MTL进行fine-tune , 再以BERT-MTL为基础 , 通过单个任务分别进行fine-tune 。

aa2Ub2Z.png!web

图14 BERT+MTL的fine-tune过程

5

评估

ae6viqa.jpg!web

图15 评估数据举例

效果变好了,有多好? 肉眼可见显然不能作为一个反馈的指标,所以我们需要去科学地评估这些改进,评估这一环节我们选了 6个不同领域,每个领域50个知识点,每个知识点12个相似问作训练,3个作评估测试 ,示例数据见图15,在此数据集基础上去评估准召和F1,具体结果见图16,大家可以看到在不卡阈值的情况下,准确率 从0.8提升到了0.968 。

ZjMVJbA.jpg!web

图16 历次迭代评估数据表

迭代是一个循序渐进的过程,可能有人会有疑惑,我怎幺知道要用什幺特征、选哪个模型,从多次迭代的经验来讲, Badcase分析很重要 ,特征的设计一方面来源于你对问题的直观感知。

比如我们需要从多方面 (统计层面、词汇表示、句子表示、句子间交互等) 来设计方法对句子进行语义表示,另一方面来源于对模型现有 Badcase的弥补 , 通过分析case表现出来的规律或者倾向来设计有针对性的特征 。

同时学术界也在不断更新新的模型,3年前时兴的技术,到现在被完全替代的可能性是非常大的,因此我们需要与时俱进。

3

结语

整个智能问答系统升级的过程,主要围绕 四个步骤 进行,首先面对任务要 理解 问题的本质 ,对问题进行 合理的建模 ,然后评估 选择合适的语言工具 去实现它,再由浅入深稳步 迭代 ,形成 数据、模型、反馈 的闭环,最后就是要持续性学习, 拥抱变化,拥抱技术 。

参考文献

[1] Nan Duan. Building Informational Bot (InfoBot) with Question Answering & Generation. In Association for Computational Linguistics (ACL). 2017.

[2]Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. 2013b. Distributed representations of words and phrases and their compositionality. In NIPS, pages 3111–3119.

[3] Qian Chen, Xiaodan Zhu,  Zhenhua Ling ,  Si Wei ,  Hui Jiang ,  Diana Inkpen . “Enhanced LSTM for Natural Language Inference”. In Association for Computational Linguistics (ACL). 2017.

[4] Le, Quoc, and Tomas Mikolov. “Distributed representations of sentences and documents.” International Conference on Machine Learning. 2014.

[5] Devlin, J., Chang, M.-W., Lee, K., and Toutanova, K. Bert: Pretraining of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805, 2018.

[6] Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019a. Improving multi-task deep neural networks via knowledge distillation for natural language understanding. arXiv preprint arXiv:1904.09482.

[7] Xiaodong Liu, Pengcheng He, Weizhu Chen, and Jianfeng Gao. 2019b. Multi-task deep neural networks for natural language understanding. arXiv preprint arXiv:1901.11504.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK