一种基于上下文的多轮对话方法与流程

文档序号:20776010发布日期:2020-05-19 20:46阅读:326来源:国知局
一种基于上下文的多轮对话方法与流程

本发明涉及数据处理技术领域,尤其涉及一种基于上下文的多轮对话方法。



背景技术:

目前,随着智能手机的普及、通讯技术的更新换代和手机应用生态的蓬勃发展,人们的生活越来越便利,信息的流通速度也越来越快,这使人与手机的联系越来越紧密,手机成了人们获取信息的重要工具。

手机天然支持语音的特性以及现在成熟的语音识别和语音合成技术,使得语音应用在直接语音交互,便利用户操作,增加用户体验方面具有独有的优势。当前语音主要应用在语音输入法,智能机器人,智能对话系统等。智能机器人和智能对话系统一般体现在完成系统设置,简单的问答聊天。这些应用在健康领域显得力不从心,也缺乏上下文交互。



技术实现要素:

本发明的目的是针对现有技术的缺陷,提供一种基于上下文的多轮对话方法,结合健康领域的对自然语言理解系统和自然语言处理系统,通过上下文关联的方法可以使用户通过语音的方式进行多轮问话获取健康知识,丰富用户获取健康知识的途经,填补了健康语音方面的空白,同时提高了用户的体验性。

为实现上述目的,本发明提供了一种基于上下文的多轮对话方法,所述方法包括:

自然语言理解系统接收当前用户输入的语句数据;

根据会话控制数据识别所述语句中的场景数据、意图信息和语义槽信息;

根据当前所述语句中的场景数据、意图信息以及当前语句的意图信所对应的状态信息进行语义匹配,得到语义匹配结果数据,并将所述语义匹配结果数据发送至自然语言处理系统;

所述自然语言处理系统根据所述语义匹配结果数据进行上下文查询,得到上下文查询结果;

当所述上下文查询结果为多个时,根据所述上下文查询结果中的优先级,对所述上下文查询结果所对应的语义槽信息进行语义槽验证;

根据所述语义槽验证的结果得到本轮会话的结果数据,并根据所述本轮会话的结果数据更新与当前语句的意图信息相对应的所述会话控制数据。

优选的,在所述自然语言理解系统接收当前用户数据的语句数据之前,所述方法还包括:

通过巴克斯范式模型构建所述自然语言理解系统。

优选的,在所述根据会话控制数据识别所述语句中的场景数据、意图信息和语义槽信息之前,所述方法还包括:

获取所述当前用户的用户id;

获取与所述当前用户的用户id相对应的会话控制数据。

优选的,所述根据当前所述语句中的场景数据、意图信息以及当前语句的意图信所对应的状态信息进行语义匹配,得到语义匹配结果数据具体为:

确定所述当前语句的意图信息与上文的意图信息是否相同;

当所述当前语句的意图信息与上文的意图信息相同时,对所述当前语句的场景数据和当前语句的上下文关联集合信息进行第一语义匹配,得到第一语义匹配结果数据;

当所述当前语句的意图信息与上文的意图信息不相同时,对所述当前语句的场景数据和当前语句的上下文关联集合信息进行第二语义匹配,得到第二语义匹配结果数据。

优选的,所述自然语言处理系统根据所述匹配结果数据进行上下文查询,得到上下文查询结果具体为:

获取所述上文的意图信息和相应状态信息;

根据所述上文的意图信息和相应状态信息以及所述匹配结果数据,进行上下文查询,得到上下文查询结果。

优选的,当所述上下文查询结果为多个时,所述方法还包括:

当多个上下文查询结果中包括选择场景下的上下文查询结果时,对所述选择场景下的上下文查询结果进行验证,确定是否存在对应的匹配项;

如果没有所述对应的匹配项,则将当前选择场景下的上下文查询结删除。

优选的,根据所述上下文查询结果中的优先级,对所述上下文查询结果所对应的语义槽信息进行验证具体为:

根据所述上下文查询结果中的优先级,对所述上下文查询结果所对应的语义槽信息进行验证,确定所述上下文查询结果所对应的语义槽信息是否与所述当前语句的意图信息相对应;

当所述上下文查询结果所对应的语义槽信息与所述当前语句的意图信息不对应时,删除当前上下文查询结果。

优选的,所述根据所述语义槽验证的结果得到本轮会话的结果数据具体为:

根据所述语义槽验证的结果生成显示输出数据;

接收当前用户根据所述显示输出数据输入的用户的相应结果;

根据所述用户的相应结果得到本轮会话的结果数据。

本发明实施例提供的基于上下文的多轮对话方法,结合健康领域的对自然语言理解系统和自然语言处理系统,通过上下文关联的方法可以使用户通过语音的方式进行多轮问话获取健康知识,丰富用户获取健康知识的途经,填补了健康语音方面的空白,同时提高了用户的体验性。

附图说明

图1为本发明实施例提供的基于上下文的多轮对话方法的流程图。

具体实施方式

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

本发明实施例提供的一种基于上下文的多轮对话方法,用于在多轮对话状态中,通过关联上下文的方法,实现对话结果更精准。为了更好的理解本申请中的内容,下面首先对本申请中所涉及的关键术语的定义进行解释说明:

会话控制数据:在计算机中,尤其是在网络应用中,会话控制又表示为session。会话控制数据用于存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的请求之间跳转时,存储在会话控制数据中的变量将不会丢失,而是在整个用户会话中一直存在下去。需要说明的是,每个会话控制数据都对应有一个会话控制数据id,用以区分不同的会话控制数据。

自然语言理解系统(naturallanguageunderstanding,nlu):用于解析用户的请求文本。

自然语言处理系统(naturallanguageprocessing,nlp):又称nlp对话系统,用于处理nlu系统的语义分析结果,在此基础上进行结果筛选、过滤、数据验证、数据查询、生成处理结果,并最终把处理结果响应给客户端。

一轮会话:从一次用户向nlp对话系统发起请求开始,到nlp对话系统对该用户本次请求产生响应结果为止的过程。

意图:nlu系统对用户请求的文本进行语义分析,结果中表示能被nlp对话系统处理的那些领域称为意图。

语义槽:nlu系统从句子中抽取出的特定概念,是为了让用户意图转化为用户明确指令而补全的变量。比如“健康”意图下会有“disease”的语义槽,表示疾病名称。如果用户说“感冒有什么症状”,经过nlu系统分析,“disease”的语义槽就是“感冒”;如果用户说“头痛有什么症状”,那“disease”的语义槽就是“头痛”。

如图1所示,本发明实施例提供的一种基于上下文的多轮对话方法包括如下步骤:

步骤101,自然语言理解系统接收当前用户输入的语句数据;

具体的,自然语言理解系统(naturallanguageunderstanding,nlu)接收当前用户输入的语句数据。用户输入的语句数据可以理解为待解析的用户的请求文本。该语句数据可以是语音形式的,也可以是文字形式的。

步骤102,根据会话控制数据识别所述语句数据中的场景数据、意图信息和语义槽信息;

具体的,nlu系统为通过巴克斯范式(bnf)模型构建的系统,在nlu系统加载有按场景区分的语法文件。巴克斯范式描述语音识别的语法文件通过nlu系统进行加载,然后编译成识别网络。nlu系统把用户文字输入或者经过语音识别后的文本在识别网络上进行路径匹配,最终识别和提出语句数据中的场景数据、意图信息和语义槽信息。

需要说明过的是,不同用户问话在nlu系统中,对同一语句数据进行识别的结果可能不同。因为不同用户所对应的会话控制数据可能不同。因此,在施行本步骤前,还需要获取当前用户的用户id,并根据当前用户的用户id与该id相对应的会话控制数据,从而保证会话控制数据的准确性。

在一个具体的例子中,nlu系统中的语法文件按照意图和场景进行区分编写,其所能识别出的场景数据包括:“entry”,表示“上下文无关”;“more”,表示“下文仍用上文语境,但需要替换语义槽”;“slot”,表示“下文与语义槽相关,需要添加语义槽信息”;“confirm”,表示“下文与确认相关”;“selection”,表示“下文与选择相关”。比如,在“健康”意图下,“entry”场景数据所配置的文件为“health.bnf”用来表示“健康”意图与上下文无关的语法规则集合,“confirm”场景数据被配置的文件“healthconfirm.bnf”用于表示健康意图中下文表示确认说法的语法规则集合;healthselect.bnf用于表示健康意图中下文标识进行选择的语法规则集合。

步骤103,根据当前所述语句中的场景数据、意图信息以及当前语句的意图信所对应的状态信息进行语义匹配,得到语义匹配结果数据;

具体的,nlu系统根据语法文件确定当前语句的意图信息是否与上文语句的意图信息相同。当当前语句的意图信息与上文的意图信息相同时,对当前语句的场景数据和当前语句的意图信所对应的状态信息进行第一语义匹配,得到第一语义匹配结果数据;当当前语句的意图信息与上文的意图信息不相同时,对当前语句的场景数据和当前语句的意图信所对应的状态信息进行第二语义匹配,得到第二语义匹配结果数据。这一过程可以理解为:nlu系统通过对用户上文意图及状态在语法文件内所有的识别网络上进行有选择性的路径匹配的过程。

在一个具体的例子中,上述第一语义匹配过程包括:

如果当前场景数据为“entry”或“more”,则进行语义匹配;如果当前场景数据为“slot”场景,且上文的状态信息为“等待语义槽回复”状态,进行语义匹配;如果当前场景数据为“confirm”且上文状态信息是“等待确认”状态,则进行语义匹配;如果当前场景数据为“selection”,且上文状态是信息“等待选择”状态,则进行语义匹配。

在一个具体的例子中,上述第二语义匹配过程包括:

如果当前场景数据为“entry”,则进行语义匹配;如果当前场景数据为“selection”,且上文状态信息是“等待选择”状态,则进行语义匹配;其他场景数据不进行语义匹配。

步骤104,将语义匹配结果数据发送至自然语言处理系统;

具体的,nlu系统将语义匹配结果数据发送至自然语言处理系统(naturallanguageprocessing,nlp)系统。

步骤105,自然语言处理系统根据语义匹配结果数据进行上下文查询,得到上下文查询结果;

具体的,nlp系统获取上文的意图信息和相应状态信息,根据所述上文的意图信息和相应状态信息以及匹配结果数据,进行上下文查询,得到上下文查询结果。这一过程可以理解为:当用户进行问话时,nlp系统会调出nlp系统中该用户保存的上次会话意图和已经响应的状态,根据状态给不同的状态位赋值,最后计算出上下文数值。而通过这一过程,可以实现通过向nlu传递用户上次请求的意图和计算获取的上下文数值,由nlu系统有选择性对用户回复做匹配的目的。

在一个具体的例子中,如果当前用户没有进行过对话,则上文的意图信息和相应状态信息均为空,上下文查询结果也为空;如果上文的意图信息和上文的状态信息表达为“等待语义槽回复”,则上下文查询结果为表达“等待语义槽回复状态位”;如果上文的意图信息和上文的状态信息表达为“等待语义槽确认或等待结果确认”,则上下文查询结果表达为“用户确认状态位”;如果上文的意图信息和上文的状态信息表达为“等待选择确认”,则上下文查询结果表达为“等待选择状态位”;如果上文的意图信息和上文的状态信息表达为“保存有上次意图”,则上下文查询结果表达为“无限定状态位”。

步骤106,当上下文查询结果为多个时,根据上下文查询结果中的优先级,对上下文查询结果所对应的语义槽信息进行语义槽验证;

具体的,当多个上下文查询结果中包括选择场景下的上下文查询结果时,nlp系统对选择场景下的上下文查询结果进行验证,确定是否存在对应的匹配项。如果没有对应的匹配项,则nlp系统将当前选择场景下的上下文查询结删除。

并且,nlp系统根据上下文查询结果中的优先级,对上下文查询结果所对应的语义槽信息进行验证,确定上下文查询结果所对应的语义槽信息是否与当前语句的意图信息相对应。当上下文查询结果所对应的语义槽信息与当前语句的意图信息不对应时,删除当前上下文查询结果。

在一个具体的例子中,如果用户首先输入“得了感冒会有哪些症状”的问题,在nlp系统做出针对该问题的回答后,用户又输出“那北京呢”的问题,第二个问题与“那高血压呢”的说法在语法上是没有办法区分的。这时匹配到的语义槽值为“北京”,把“北京”作为疾病名称,通过疾病校验接口可以判断出语义槽的值是无效的,用户说的不是健康意图的问话,有可能会是其他意图的问话,这时过滤掉此条匹配结果即可。

步骤107,根据语义槽验证的结果得到本轮会话的结果数据,并根据本轮会话的结果数据更新与当前语句的意图信息相对应的会话控制数据;

具体的,nlp系统根据语义槽验证的结果生成显示输出数据,并接收当前用户根据显示输出数据输入的用户的相应结果,最后根据用户的相应结果得到本轮会话的结果数据,并根据本轮会话的结果数据更新与当前语句的意图信息相对应的会话控制数据。

下面以两个具体的实施例对本方案进行说明。

例1:本次会话已经结束,但用户再次进行会话时是基于前面的问话进行的,因此要对上次会话用户的意图进行关联。

用户问:“高血压需要吃些什么?”

nlp系统答:“高血压需要吃清淡食物,要定期进行检查...”

用户问:“那感冒呢?”

nlp系统答:“感冒需要多喝水,注意休息...”

用户第一次问话,nlu系统分析因为没有上下文值,只会对“health.bnf”文件内的语法进行匹配,匹配结果是用户意图为“health”,语义槽有两个:一个名称为“disease”值为“高血压”,另一个名称为“type”值为“吃”,nlp对话系统查询高血压在吃的方面进行查询,并把查询结果响应给用户后,记录用户的意图是“health”,记录这次会话的语义槽,会话的状态是结束状态。

当用户再问“那感冒呢”时,nlu系统分析用户的意图时,因为上文用户的意图是“health”,nlu系统查询的状态位有无限定查询,nlu系统会对“entry”和“more”场景数据表示的“health.bnf”和“healthmore.bnf”两个文件对用户问话进行匹配,结果会在“healthmore.bnf”文件中获得匹配结果,得到的用户意图信息为“health”,语义槽一个:名称“disease”值为“感冒”。而nlp系统处理时,“health”的意图信息上下文语义具有最高的优先级,进行“health”处理,因为只有疾病名称,缺少“type”类型,这时可以就会使用上次会话记录的“type”值,因此nlp系统查询感冒在吃的方面进行查询,把查询结果响应给用户后记录用户意图是“health”,记录这次会话的语义槽,会话状态是结束状态。

例2:本次会话分析用户后,处理语义槽发现有不确定的一个语义槽值需要用户确认:

用户问:“我想查睡不着觉是什么病?”

nlp系统答:“失眠符合您要查询的症状,你要看看详细介绍吗?”

用户问:“是的”

nlp系统答:“失眠通常指患者对睡眠时间和或质量不满足并影响白天社会功能的一种主观体验,包括入睡困难、时常觉醒及(或)晨醒过早...”

用户第一次问话,nlu系统分析用户意图为:“health”,语义槽有两个:“症状”值为“睡不着觉”,另一个是“action”值为“query”。nlp系统对“症状”是睡不着觉的疾病进行查询,发现结果只有一个:“失眠”,那用户有可能问的是失眠,那这种情况下,需要和用户确认一下,nlp系统会把确认问句响应给用户,记录本次用户的意图是“health”,记录本次待确认的语义槽“disease”,会话状态是等待用户确认语义槽状态。

当用户做出肯定回答后,nlp系统会设置无限定状态位和确认状态位,nlu会对“entry”和“confirm”场景表示的“health.bnf”和“healthconfirm.bnf”文件对用户问话进行匹配,从“healthconfirm.bnf”中获得匹配结果。

本发明实施例提供的基于上下文的多轮对话方法,结合健康领域的对自然语言理解系统和自然语言处理系统,通过上下文关联的方法可以使用户通过语音的方式进行多轮问话获取健康知识,丰富用户获取健康知识的途经,填补了健康语音方面的空白,同时提高了用户的体验性。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、用户终端执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1