百度语音助手实现多回合回话的技术分析

来源:互联网 发布:注册网络域名诈骗 编辑:程序博客网 时间:2024/05/01 21:25

使用自然语言的自动应答技术是当今的一个发展热点,存在很多技术。如何来构建一个相对智能的提供业务服务支撑的自动应答系统?这需要把多种技术结合起来,共同来实现这一系统。我将根据我以前的相关经验,撰写一个系列来描述如何构建一个这样的系统。

这个系列将会分成这样一些内容。

1、  分类,意图识别的最简单技术;

2、  实体识别与信息抽取,自然语言处理的灵魂;

3、  任务管理,集合蚂蚁们的威力;

4、  上下文管理,记忆的力量;

 

作为引子,我先以分析百度语音助手最新推出的多回合会话的实现,了解上下文管理是如何构建的

在百度语音助手的最新版本中,添加了对机票购买功能的多回合支持,我们看一下具体的例子。

User:买机票

Answer:好的,飞机票。亲什么时候动身,从哪儿至哪儿啊?

User:去北京

Answer:请问您的出发地是上海吗?

User:是

Answer:好的,从上海出发的到北京的飞机票。什么时候离开?

User:后天

Answer:显示航班列表

 

我们可以分析一下百度语音助手如何实现这一功能的。为了实现这个功能,首先需要进行一些抽象,而后将信息之间建立关联。

         在语音助手中,用户输入的信息可以被抽象为两类信息,第一类信息是用户希望做的事情,我们将其称为任务;第二类是为了完成任务,需要用户提供的信息,我们称为事实。上述例子中,“购买机票”这就是一个任务,而“时间”、“出发地”、“目的地”就是这一任务所需要的事实。

         在百度语音助手中,实现了用户输入自动提示和确认,要实现这一功能,就需要建立任务和事实之间的关联。因此我们可以知道,百度语音助手建立了任务和事实之间的关联。为了对每一个会话进行任务—事实关联,我相信百度一定建立一个元数据层和一个操作层。在元数据层中,将任务抽象为任务类型,事实抽象为事实类型。当有具体的任务和事实出现时,将任务与任务类型,事实与事实类型进行关联。而后再根据回话,将同一个会话的任务和事实建立关联,也可以通过会话—任务—任务类型—事实类型—事实—会话的闭环来连接这个关联和判断需要用户提供哪些信息。下面是示例图:



用户输入自然语言之后,系统会首先识别任务。不如刚才的例子中,“买机票”会被用于识别出任务“购买机票”。会建立一个新的任务节点,它和“购买机票”的任务类型之间简历一条边,和所在会话建立一条边。这时候数据间的关系和结构如下图:



我们通过查找任务—任务类型—事实类型—事实—会话—任务的回路,发现“时间”、“出发地点”、“到达地点”在该“会话”下没有事实存在,根据这个判断,系统提示用户需要输入的事实类型。而后用户输入一个地点“北京”,这时候数据间的关系和结构如下图:


由于“出发地点”和“到达地点”都是“地点”,通过定位获得所在地是“上海”,所以反问用户出发地是不是上海。用户确认后,把这两个事实作为图中节点加入,同时和“到达地点”建立一条边,和所在会话建立一条边。这时候数据间的关系和结构如下图:


再重复一次刚才的工作,发现“时间”事实还没有,再次问用户,用户输入“后天”,转换为对应时间,把这个事实加入图,建立对应边。这时候数据间的关系和结构如下图:


再次检查后发现所有的事实都有了,发现所有需要的事实都有了,我们建立任务和事实之间的关系。运行任务,给出对应的内容。最终整个任务—事实的结构如下图:




0 0
原创粉丝点击