原创 | 工业场景下,问答机器人如何陪聊?
来源: | 作者:K君 | 发布时间: 2018-10-22 | 7171 次浏览 | 分享到:

REfO问句匹配示例

3.2

基于脚本的规则引擎

该引擎根据人工编制的对话脚本,自动匹配问题模式,给出回答(动作),因此开发者只需把精力放在脚本编写上。引擎约定了脚本语法,满足大部分对话编制需求,如随机对话模式、通配符、变量捕获、Topic机制(多轮对话机制)、动作触发(函数调用)等。常见的规则引擎包括AIML[3]、Chat[4]、Rive[3]、Super[6],引擎诞生时间从早到晚,但其中最有名的还是AIML(支持Python调用)。其中使用AIML和Chat开发的Bot,都曾多次赢得年度Loebner Prize[7]人工智能大奖。Rive和Super脚本更加简洁,下图是同一个随机问答功能的脚本比较,可见Rive要比AIML更简洁友好。此外Rive支持多开发语言Go/Java/Java/Perl/Python,Super虽然仅支持Java,但其内嵌了图数据库功能,NLU和DM功能较Rive更加强大 。

AIML随机回答模式脚本

<category>

<pattern>今天天气真好</pattern>

<template>

<random>

<li>是呀,天气不错。</li>

<li>要不出去走走?</li>

<li>希望每天天气都这么好!</li>

</random>

</template>

</category>

Rive 随机回答模式脚本

+ 今天天气真好

- 是呀,天气不错。

- 要不出去走走?

- 希望每天天气都这么好!

3.3

RASA

实际对话中,相同问题的问法千变万化,这使得采用人工编制规则来匹配用户问题非常困难;基于机器学习Chatbot框架,通过大量的历史训练问答语料,部分克服了该问题。RASA[8]是其中杰出的开源代表,它包括RASA NLU和RASA Core两个子框架。

RASA NLU负责意图识别和实体抽取。这里首先需要使用已训练好的MITIE模型,该模型需要大量领域相关的中文语料。如构建风力发电领域对话,就要搜集机组的故障工单、故障报告、说明手册等;其次,要构建做意图识别和实体抽取的训练样本,以json格式存储,内容见下图,包括训练文本、意图名、实体名;