前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对话机器人的几种实现方式

对话机器人的几种实现方式

作者头像
段清华DEAN
发布2020-02-14 16:54:02
1.3K0
发布2020-02-14 16:54:02
举报
文章被收录于专栏:AI工程AI工程

闲聊机器人实现

模板实现

早期闲聊机器人主要是通过模板实现,也就是规则,比较有代表性的语言是AIML,即人工智能标记语言,是一种基于XML的方言。

例如:

WILL YOU HAVE SEX *

reference:https://github.com/mz026/aiml-en-us-foundation-alice.v1-0/blob/master/sex.aiml

结束

检索式

检索式类似模板式,只是使用类似搜索引擎或者某种数据相似读的方法从大量数据库找到对话答案,或者说下一句回复。

本质上是学习一个函数,针对上下文,寻找已有数据库中最匹配当前上下文的回复,当前也有一些基于检索机器人的研究应用了最新的深度学习模型,如BERT等。

reference:https://arxiv.org/pdf/1911.02290.pdf

seq2seq式

现在训练还有诸多难点,其实效果很难在现实中应用。

总体来说应该作为对检索和其他模式的补充

总结

工业应用检索依然是主流,无论是从前几年的Alexa Prize还是最新的小冰的介绍,都还是如此。

在检索模型上增加各种功能模块应该是主流,如小冰的“比喻能力”,其实可以认为是一个基于规则的、基于搜索的模型。

reference:《「爱情就像脂肪,是点点滴滴的积累」,微软小冰造句天马行空,三大首席科学家万字解密背后技术原理》https://mp.weixin.qq.com/s?__biz=MzI5NTIxNTg0OA==&mid=2247499247&idx=1&sn=31cd01a61e87e3e755cc85b92bc9c9bf&chksm=ec544a68db23c37e1b9369efb88ea8d5dc1834e7d499f8c7474695f78b3a1e911ff9bb84563c&mpshare=1&scene=1&srcid=1129vQBGgMoAQpIiReM5NYja&sharer_sharetime=1574961765740&sharer_shareid=d1eb5503b89c5eaa53654bcc0ebe78d1&pass_ticket=DtG2XnJnrqRoW7BWgeALYiQpj%2BpgL13If%2FT6eUujb5SLeMYZWc6gFgpOL%2BwS1q8C#rd

问答系统

检索式问答

和检索式闲聊完全不一样。

直接从文章中检索答案,大概过程是:定位答案的可能类型,搜索文章,确定段落,搜索答案。

例如人问:中国最大的城市

那我们可以知道,答案是一个城市,或者说一个地点(location)

然后我们把这句话拿到搜索引擎中,很可能得到如“北京是中国最大的城市”这样的句子,因为我们知道答案类型是“地点”,所以这句话唯一的地点"北京"就会被返回。

基于问答对的问答

这个反而是检索式闲聊比较像,主要是寻找最优回复。

基于知识库的问答

一般这个知识库是语义网或者知识图谱,或者结构化数据库。

例如对于简单的问题,如主谓宾缺一的问题,可以识别有的两个,然后去数据库中匹配。小蜜如何做问答的?

智周如何做问答的?

总结

谁简单用谁,尽量不考虑基于知识库的问答

任务机器人

结构

我们其实可以把任务机器人简单分成两部分:语言理解,对话管理。

语言理解顾名思义是理解用户,一般也就是人类的语言的含义,这一步的目的是将自然语言符号化,只有符号化的事物才能进行推理。

对话管理,可以认为是根据我们对这一句的理解,上一句的理解,上上句的理解,其他上下文信息等等,共同决策机器人应当回复什么。

当然传统上一些流程图可能会分为

LU,DST,DP,LG等几个部分,但是其实除了LU比较明确,其实后几个部分在大部分系统实现中是很模糊的。

也就说大部分机器人可以认为是如下公式:

(意图i, 关键实体i) = 语言理解(用户输入i)

回复 = 对话管理(意图0, 关键实体0,意图1, 关键实体1,…,意图n, 关键实体n,其他上下文)

意图:一句话的具体含义的抽象,例如“你好”、“你好吗”、“hello”的抽象可能都是“问候”

关键实体:一般是任务必要的属性,例如时间、地点、人物等

其他上下文:例如对话外的属性,例如正在对话的人的性别、爱好、年龄等

这里0到n指n轮的对话,理论上决策应该根据所有跟用户的对话一起判断。

如何做语言理解?

NLU很简单,所有人的实现都很“简单”,意图识别和语义槽识别都很“简单”,这里的简单是指这些都是当前比较完善的NLP问题,一般没有太大难度。

小蜜如何做对话管理的?

1.1. 如果意图是查天气意图

去做什么 1.5.

否则

去做什么

智周如何做对话管理的?

BotFramework是如何做对话管理的

reference:https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/19.custom-dialogs/dialogs/rootDialog.js

RasaCore如何做对话管理的?

数据驱动

缺点很明显,上下文加入不灵活,有问题需要修改数据,现在数据标注也越来越复杂了,看似能解决很多问题,但是实际上太复杂的问题也解决不了。

总结

基于规则的对话管理还是主流,主要其实是在于“灵活性”

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 闲聊机器人实现
  • 模板实现
  • 检索式
  • seq2seq式
  • 总结
  • 问答系统
  • 检索式问答
  • 基于问答对的问答
  • 基于知识库的问答
  • 智周如何做问答的?
  • 总结
  • 任务机器人
  • 结构
  • 如何做语言理解?
  • 小蜜如何做对话管理的?
  • 智周如何做对话管理的?
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档