开源任务式问答机器人框架系列--Dialogflow
Dialogflow
Dialogflow,其前身为API.ai,后来被谷歌收购, 其框架是基于谷歌云的自然语言理解。集成在SMS,Webchat和电子邮件,Slack,Facebook Messenger,Google智能助理,Twitter,微软Skype和Skype for Business等软件或应用中,但其对国内开发者不是很友好,毕竟网站经常无法打开。
上图为Dialogflow的工作流程图,对话机器人原理或架构上相差不大,基本都包括文本/语音输入模块,自然语言理解模块,以及自然语言生成模块,在Dialogflow中还加入了拼写检查模块,主要是语音转文本或者输入的文本本身可能存在拼写错误,如同音,形近字等. Dialogflow的NLU模块后接入数据酷进行用户问题的答案查找,这里可做很多动作,例如搭建一个知识图谱作为后端,进行知识的查找,或者FAQ查找,或者其他检索等,也可接入第三方模块.
创建一个实例
基于Dialogflow的聊天机器人的创建主要是在网页端进行,不太需要进行代码开发,较适合于体验.
创建基于Dialogflow的聊天机器人需要创建google账号,gmail账号,以及dialogflow账号.(需外网,省略)
如图,登录dialogflow账号后,点击create进行创建,左侧是控制台选项,如下图,我们需要定制我们的意图,以及涉及到的实体,右侧是模拟器,点击可输入我们的测试用例.
输入测试例子,我们也可以立即知道当前测试例子所属的意图为(Default Fallback Intent),机器人执行的action为input.unknown,以及机器人的回复是default response.
创建意图
点击左侧的intents,比如我们要定制机器人的名字,在intent name中加入"name",然后在Training Phrases部分中,输入以下内容作为训练数据,在每个条目后按Enter键:
你叫什么名字?
你有名字吗?
名称
#在“响应”部分中,单击文本字段并输入以下响应:
我的名字是Dialogflow!
#单击“保存”按钮。
重新测试:
可以看到其意图变为了Name,默认回复也已经改变.
实体添加
左侧 Entity 一栏中可添加我们所需的实体类别。如,我们可以添加一类叫做 languages 的 Entity,并在其中加入 English、 Franch、 German 等单词。之后就可以去 Intent 中进行训练。添加实体作用是我们只需训练某一类句式,通过上下文关系,系统可自动识别出实体,。如,‘I speak English’。按下回车后,系统会自动识别 English 这个单词,并关联出其所在的 Entity 显示在下方。这样,之后如果在 右侧 Train 一栏中输入‘I know German’ 或 ‘I say French’ 等,都可以输出这个 Intent 中的 Response 的内容。
很多常用的 Entity,如时间,数字,日期等,Dialogflow已经为我们内置, 方便我们直接使用,系统自动这些预设 Entity。
以上是添加的实体,及训练语料,以下是测试
类似的句式下,系统可自动识别出Russian实体.
此外还有关于上下文的设定,匹配预制的设定,action的设定等,再次不再展开讲,可参考官网相关描述.
总结
Dialogflow相比于更倾向于普通用户体验,不是很适合大规模的开发使用,很多参数的设置也会因不同的需求而有较大区别,且配置均在网页端进行,对于国内用户不是很友好,比较影响文档查阅及开发调试.
参考: https://www.jianshu.com/p/a15cd7d35037
http://cc.ctiforum.com/jishu/hujiao/hujiaozhongxinjishu/ics/jishuwenzhai/556023.html
https://blog.csdn.net/weixin_33893473/article/details/88033249