共计 3841 个字符,预计需要花费 10 分钟才能阅读完成。
写在前面:在背景篇《敏捷 AI | NLP 技术在宜信业务中的实践【背景篇】》中,我们大概了解了 NLP 技术的发展情况,接下来,我们会向大家介绍 NLP 技术在宜信应用的高级场景。本篇为场景中的智能聊天机器人篇,敬请收看~
作者:井玉欣。毕业于北京大学信息科学技术学院,获博士学位,研究方向包括计算机软件与理论、逻辑推理等,目前就职于宜信技术研发中心,从事人工智能、机器学习、自然语言处理以及知识工程等方面的研究。
##高级场景之智能聊天机器人
前文我们介绍了 NLP 技术、数据、服务上相关演化发展的过程,接下来,我将结合两个具体的实例来分享我们在 NLP 领域的一些实施经验。今天要介绍的是:如何利用 NLP 技术以及智能聊天机器人来解决组织内部面临的大量的每日业务咨询问题。
图 1
对于现代企业来说,智能聊天机器人有着非常广泛的业务需求。对外,我们有常见的客服机器人、智能投资顾问等;对内,我们有业务支持机器人、运维机器人以及个人助理等。
本实例是一个面向企业内部的信贷业务咨询机器人,为一个问答类 QA-BOT。它的业务背景是:目前宜信的普惠业务在全国范围内有着 500+ 线下门店,包括 600+ 位营业部主管,3000+ 位业务专员以及 20000+ 位一线销售。
每天这些一线同事在业务工作中都会产生大量的业务咨询问题,以往这些问题都是后台支持同事人工在 IM 中进行处理,工作非常枯燥,处理成本高、效率低;无法对问题进行有效的统计,不知道问题提问的频次,导致无法针对性的进行培训。长此以往,不利于业务的发展,也不利于团队的发展。
为了解决这个困境,我们研发了一个基于 QA 的问答机器人来支持这个工作,将人工的过程转为自动处理,从而实现一个全天候、7X24 小时的全面支持机制。
对于问答机器人来说,其任务的核心和本质实际上就是基于检索的问答模型,我们给它半形式化地定义如下:
输入一个用户的问题 Qx,在已有的 QA 数据库中,即(Q1,A1),(Q2,A2),…,(Qn,An)等 QA 问答对中,找到这样一组问答对(Qk,Ak),使得函数 F(R(Qx),R(Qk))的值最大,其中 F 为语义相似度函数,R 为文本表征函数。
上述定义就是说我们希望在所有 QA 问答对的问题中找到与用户提问最为相似的那个问题,它所对应的答案便是最合适反馈给用户的答案。
这其中的核心问题是求文本语义相似度,也就是求两个问题文本之间的相似度。解决这个问题有很多方法,例如我们可以直接构建一个 Dual LSTM 的神经网络,把用户的 query 从一侧进行输入,然后把知识库中问答对的 question 从另外一侧输入,通过 RNN、CNN 或者全链接的网络,在语料充足的情况下,就能够训练出一个模型,输出的概率值即为两个输入问题的相似度,如图 2 所示。
图 2
然而,大多数情况下我们都面临样本不够充足的问题,尤其是在快速迭代的研发环境下,我们通常无法搜集到足够的语料。所以我们常把相似度问题拆分为两个子问题,即短文本语义表征和语义距离计算。两者间又以前者更重要一些,一旦我们即将处理的问题有了一个合理的语意表征,我们就可以通过简单的余弦距离、全链接网络等计算出两个表征之间的语义距离或者说语义相似度。
那我们怎样准确地表征短文本语义呢?
这也有很多方法,比如经典的词袋模型,还有一些无监督的表示方法(词向量加权、Doc2Vec、Skip-thought、Variational Auto-encoder)以及有监督的表示方法(DSSM、迁移学习)等。
但是我们要注意到之前所说的限制条件,也就是只能基于小规模语料和目前有限的 QA 问答对,而且业务要求快速实施、快速迭代。于是在方案的早期实施阶段,我们优先选择了“词袋模型 + 同义词扩展 +tf-idf 权重”的这个方法,利用我们之前积累的相关术语的同义词、常用词的同义词,可以把一个问题进行基于同义词的复述,从而探索出来很多不同的问法,来提高用户提问在有限 QA 对数据库中命中的几率。通过上述方法构建出短文本的表征向量之后,再利用一些语义相似度的计算方法,就可以得到两个文本之间语义相似程度的分数。
这种方法最大的好处就是快,我们可以利用小规模的语料,1- 2 周之内在一个新领域上迅速上线一版效果表现非常不错的问答机器人。
图 3
当然这个方案肯定不是终点,上述这个方案最重要的作用是迅速上线初版模型,利用这个模型我们就可以去收集用户提出的真实问题,滚动、积累更多问题数据,不断的补充进语料库和 QA 数据库,进而为我们训练更复杂的模型提供基础。而且随着 QA 数据库中的 QA 对越来越多,我们可以去回答更多类型的问题。
在有了一定的语料基础之后,我们构建了一版更为复杂的神经网络模型。这里我们采用了经典论文“Universal Language Model Fine-tuning for Text Classification”(by J. Howard et al)中的思想,在通用语料上先训练出一个 language model(语言模型),再在领域语料上对该模型进行 fine-tuning,最后将其迁移到最终的目标任务上,此外论文还提供了一些调参、优化的技巧。
图 4
按照这个思想实施项目:在 Wiki 语料上训练语言模型之后,又在领域语料上进行了调优,然后迁移到相应的相似度计算网络上,最终得到了一个不错的测试效果。返回的答案列表中,正确答案排在首位的概率有 88%,正确答案位于列表前三位范围以内的概率有 94%,整体来看这个效果是不错的。
当然对于问答机器人来说,QQ 相似度计算只是其中比较重要的一步,还有许多其他模型需要融合进来,协作提高问答的准确率。比如 QA 匹配模型,用来计算用户问题和知识库中所有问题对应答案的匹配程度。不过有了前面 QQ 相似度的计算基础,我们完全可以用同样的思路来构建一个 QA 匹配模型,输出 QA 匹配度值。最后将 QQ 相似度值和 QA 匹配度值进行加权重排,得到最终的答案列表,这才是返回给用户的答案。
此外还有一个扩展方向,即对于用户提问未能命中 QA 数据情况的处理。QA 数据库是由人工提取或智能生成的 QA 问答对构成的,个数有限,因此对于用户可能会提问的各种各样的问题无法完全覆盖掉。一个有效的能力扩展方法就是开拓 QA 机器人的检索数据源(见图 5),将机器人检索范围扩展到一些第三方 API 查询接口,QA 问答对数据库,知识图谱以及文档等各个渠道的知识,从中找到答案。
图 5
在我们的项目里,我们实施了“文档检索 + 关键信息提取”的保底方案,在问答数据库无法覆盖所有问题的情况下也尽可能为用户提供答案。
当然,我们还可以针对一些问题,通过槽值提取、实体关系识别等方法,实现在三方 API 上或者知识图谱上进行搜索,不过这个方法会稍微复杂一些,一般还需要会话的支持,此方面有专门的文章和报告,这里不再赘述。
不过提起多轮会话,我们还可以利用这个技术解决另外一个问题,即如何解决模糊提问。实际中,用户提出的某些问题非常模糊,无法找到准确答案,这常常会造成系统效果下降。例如用户问的问题非常简短,仅仅两三个字,这显然很难在 QA 数据库里检索到一个准确答案。
图 6
图 6 是一些资料上对机器人进行的划分,对话机器人在这里分为 QA 类和会话类两类机器人。QA 类机器人就是在结构化和非结构化的数据上进行检索。而会话机器人则通常需要在多轮会话支持下,就一个问题多次与用户进行交流,捕获用户意图,给出对应的响应,比如闲聊机器人,任务机器人以及推荐机器人等。
我们认为 QA 机器人也会逐渐引入会话的概念,对于用户提出的模糊问题,完全可以利用对话状态分析、对话状态管理以及关键信息识别等方法来判断用户的意图是什么,缺失的信息有哪些,之后利用文本生成或追加提问等方法来要求用户补充更多信息。这样我们的机器人在有足够信息的条件下,就可以查找到更精准的结果。
图 7 机器人处理主要流程
图 7 是机器人的处理流程,分为了预处理、分析分类、检索匹配、综合排序四个主要环节,各环节所涉及的技术也有枚举,报告之前我们着重介绍的 QQ 检索、QA 匹配等任务。
另外,我们对聊天机器人这一相对高级的场景也提供了平台化的管理(见图 8),其架构主要是在底层的自然语言处理平台上进行了进一步的场景化包装,在其基础之上增加了聊天机器人模块(包括 Web/APP 集成、对话管理、人工后台、外部 API 对接等),QA 库管理模块(包括数据管理、实施发布等)和知识库管理模块(批量导入、内容管理、语料生成等)以及很重要的统计模块(包括统计挖掘和报表展示)。
图 8 平台化高级场景管理
我们通过对场景中各功能进行封装和整合,以平台的形式提供一个一站式解决方案,用户在付出少量数据的情况下,就可以对模型无感知地迅速构建一个自己的业务问答机器人。
图 9~ 图 11 为机器人的一些运行效果截图。其中图 9 为 web 版机器人交互界面,可以看到机器人回答的形式包括精准回答、相似问题、文档库搜索内容。
图 9 机器人展示效果
图 10 是后台管理界面中的会话检索功能,可以在此方便地浏览机器人和系统用户所进行的会话,评估机器人效果,并可以把在会话过程中发现的、QA 库里没有记录到的新问题识别出来,快速方便地添加到 QA 库之中。
图 10 后台管理 - 会话检索页面
图 11 为模型管理模块,其中可以看到机器人所涉及的各类模型列表,每个模型后有相关操作按钮,可以对模型进行上线、更新、重启、停止等一系列管控操作。
图 11 后台管理 - 模型管理页面
以上便是 NLP 技术在宜信的应用场景之一:智能聊天机器人。下篇我们会为大家介绍另一个应用场景,构建客户画像。敬请大家期待~