2019-06-17问答系统项目落地调研

本文详细调研了问答系统项目,包括聊天机器人的实现方式、平台型、解析型和单一型框架。重点分析了ChatterBot、rasa、DeepPavlov等框架的优缺点。最后总结了理想的问答系统应具备多种问答模式,如规则模版、相似度匹配和生成模型,并提出了集成方法。
摘要由CSDN通过智能技术生成

1 chatbot概述

1.1 行业分类及目前的应用状况

智能人机交互通过拟人化的交互体验逐步在智能客服、任务助理、智能家居、智能硬件、互动聊天等领域发挥巨大的作用和价值。因此,各大公司都将智能聊天机器人作为未来的入口级别的应用在对待。

包括Google、Facebook、Microsoft、Amazon、Apple等互联公司相继推出了自己的智能私人助理和机器人平台。

1.2 问答实现方式

目前的chatbot实现方案主要有两种,检索匹配模型和生成模型。

  • 端到端生成模型:不需要预设问题库和知识库,是通过大量的语料数据训练,以学习语言元素的组成和表达方式,再分析组合生成回答。类似于我们学习说话的方式,自然地根据对方的话,生成回答。
  • 检索匹配模型需要有一个问题库和对应的回答知识库及回答模板。在用户发出信息后,分析用户表达的内容,通过一定的匹配规则,匹配到和问题库最相近的问题,再给出相应的回答。匹配的过程中通过自然语言处理、机器学习等技术优化匹配方式,尽量给到合理的回答。检索匹配模型有两种主要实现方式:
    1. FAQ式 文本相似度计算:比如10086的在线智能客服,用户提问“如何查询话费”,那系统可以自动给出一个对应的知识“请您向10086号码发送‘HF’短信,即可查询当前话费”,而不再需要耗费高成本的人力来做解答。一般存储 问-答文本对数据。
    2. 任务式:规则模版-词槽匹配:“我想订一张明天从杭州到北京的机票” -> 进一步填充 出发地-目的地-时间。一般存储为图结构。

1.3 两种问答模式的优劣:

  • 生成模型的对话更灵活,更像人,但是依赖的语料数据的训练、生成的语言结构等不是特别完善,容易出现语言结构混乱语无伦次看不懂的问题;
  • 检索匹配式,需要更多的精力去维护问答知识库,同时也会存在意图识别不准,问东答西的情况,但由于实现逻辑相较而言容易实现,且问答是可控的,不会出现语言结构错乱的问题。

根据各自的优势,生成模型内容涉及可以很泛很广,更适用于闲聊娱乐等模式;检索匹配模型,更适用于垂直领域信息的集合和知识的汇总,在一定的领域内,建立庞大的知识体系,完成特定的业务

2 框架分析

本文将调研的chatbot系统分为三个层次:平台型;解析型;单一型。

  • 平台型:大公司成熟的chatbot集成平台,可以处理任务式闲聊式。用户只需要简单配置即可生成自己的chatbot,这也是我们未来成果的愿景。 但并没有暴露代码,目前能直接供我们学习内容的很少。(eg:Wit.ai 、DialogFlow、UNIT)
  • 解析型:成熟的平台,没有代码使用,但提供了论文详细解析自己的系统,便于我们学习形成自己的架构。(eg:阿里小蜜)
  • 单一型:暴露出代码(框架),可以用来生成我们框架中的某一种模块。(rasa、chatterbot、anyq)

2.1 平台型

大公司成熟的chatbot集成平台,往往再用交互式、傻瓜式配置。用户只需要简单自定义即可生成自己的chatbot,这也是我们未来成果的愿景。

但并没有暴露代码,目前能直接供我们学习内容的很少。

2.1.1 Wit.ai

Wit.ai 是 Facebook 推出的用于将自然语言转化为可处理指令的 API 平台,其目的是为了帮助开发者便捷的打造类 Siri 语音对话应用或设备。

  • Step 1 注册 Wit.ai 账号
  • Step 2 简单设定机器人名字描述等信息
  • Step 3 创建对话情景(story):

image

整个介面就像是一个对话视窗,左边是 User says,右边是 Bot sends, Box executes 与 Jump。

  1. User says: 顾名思义就是定义 User 会说的话,并且你可以设定 User 的句子中,有哪些关键字是你需要的、哪些文字是代表什麽含意,在 Wit.ai 的世界中,这样的东西叫做 Entity,后面会再度说明。
  2. Bot sends: 就是机器人要回覆的句子,这边可以带入一些参数,像是 user 所提及的一些关键字,或是机器人向外呼叫 API 所得到的结果。
  3. Box executes: 就是让你定义机器人要执行的 function,真正的实作不会在这边,这边只是定义名称,以及要接收的 context 与 吐回的变数名称。
  4. Jump: 则是让你能够在满足设定
  • Step 4 定义使用者语句

下来我们先定义 User 可能会对我们的机器人说的话,像是使用者可能会跟机器人打招呼,我们就可以在对话框的 User says 输入 Hello,并且 highlight 起来以后设定 Entity,Enity 在 Wit.ai 裡面,就是用来让系统判断使用者输入句子时,哪些关键字是要抽取出来做处理的,你可以依照该关键字的特型来设定相对应的 Entity 类别。
这边我们就自定义一个 Entity 名称叫做 greeting。

用户表达同一意图的说法可能是无限的。
可以在Understanding这个地方你有三种方式可以用来训练你的机器人:

  1. 定义更多keywords: 要完全符合你预先设定的关键字才会触发。

  2. free-text: 如果你想要撷取使用者句子中的某段文字,而该段文字并不是特定的关键字时,就要设定 free-text,

  3. trait: 如果你想设定的 意图 不是靠句子中几个关键字能够辨别,而是需要整个句子来判定的话,就要设定成 trait。

  • Step 5 定义机器人回覆语句

当机器人收到 greeting 的 Entity 后,可以让用相同的 entity value 回覆,并加上简单的介绍。
点选下方的 Bot sends,对话框就会出现机器人的部分,你可以在裡面输入机器人的回覆语句,想要的变数可以用{ }包起来,这边我们直接使用 greeting 这个 entity,这样就能用同样的 Entity 去回覆。

  • 多轮问答:

如果我们的机器人需要做一个包含两个问题的调查,根据第一个问题答案的不同,机器人会额外询问一个附加问题。这样的例子,就叫做基于流的对话。

我们利用 bookmark 进行处理:当第一个 intent 为 no 时,我们使用 Jump 跳转到 question-2 的 bookmark,直接开始第二个问题的询问;当第二个 intent 为 no 时,我们同样利用 Jump 跳转到 end 的 bookmark,结束询问。补全了整个对话过程。

[外链图片转存失败(img-K49i8nMM-1562122836275)(http://image.woshipm.com/wp-files/2

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值