基于Rasa的任务型对话系统设计与实现
2022-04-22刘宇杰陈家豪周浩冉
刘宇杰,陈家豪,宋 晖,周浩冉
(东华大学计算机科学与技术学院,上海 201620)
0 引言
近年来,随着大数据理论和机器学习技术的发展,构建一个智能对话系统不再是一件难事。一方面,我们可以让机器学习在给定输入的情况下响应什么以及如何响应,这使我们能够构建数据驱动、面向特定任务的对话系统。另一方面,机器学习技术已被证明能有效捕获数据中的复杂模式,并为自然语言处理和推荐系统等众多研究领域提供了强大动力。
对话系统按照对话的目标可以分为4类:任务型对话系统、闲聊型对话系统、问答型对话系统以及推荐型对话系统。任务型对话系统是通过自然语言交互的形式来帮助用户完成某个特定的任务,如行程安排、网上订票、订餐服务等;闲聊型对话系统通常不会有明确的目标,其关注点在于生成流畅、合理且自然的回复,主要功能是消遣娱乐;问答型对话系统旨在基于特定的知识库,回答用户的问题,主要是用来帮助用户获取其关注的信息;而推荐型对话系统则可以看作问答型对话系统的一种,主要是利用人机交互在知识库中查找最符合用户需求的产品或服务。
本文主要针对任务型对话系统实现所需要的理论和技术展开论述,在此基础上面向企业服务领域详细介绍如何使用Rasa框架搭建对话系统,以及Rasa对话系统如何和其他部分协同完成一个完整的语音对话系统。
1 相关研究和技术
1.1 任务型对话系统
任务型对话系统又称多轮对话系统,其目的是完成特定的需求和任务。早期的任务型对话系统主要通过语义理解等方法来确定用户意图,并且通过状态追踪和策略选择等方法来确定如何进行答复。随着人工智能技术的发展,越来越多的机器学习方法被应用于任务型对话系统,由此诞生了基于端到端(End-to-End)的任务型对话系统。
1.2 任务型对话系统实现方式
从实现技术上来看,任务型对话系统分为管 道(pipeline)方 法 和 端 到 端(End-to-End)方法。
1.2.1 管道方式
基于管道方法的任务型对话系统主要包括5部分:自动语音识别(automatic speech recog⁃nition,ASR)、自然语言理解(nature language understanding,NLU)、对话管理(dialogue man⁃agement,D M)、自然语言生成(natural language generation,NLG)和语音合成(Text To Speech,TTS),其流程如图1所示。
图1 任务型对话系统流程
管道方法一般是由各个模块级联而成,各模块需要定义各自相应的接口模式,从而确定每个模块的输入输出。在管道方法中,自然语言理解和对话管理这两个模块在整个方法中的逻辑联系最紧密,是任务型对话系统的核心模块。
(1)自然语言理解(natural language under⁃standing,NLU)。自然语言理解的目的是提取用户的输入为定义好的槽值和意图,通常包括两个任务:意图识别和语义槽填充。意图识别属于分类任务,它根据用户当前的输入,使用机器学习中的分类方法推断用户的意图属于预定义的候选集中的哪一个。语义槽填充与领域识别不同,其本质上是一个序列标注问题,其目的是识别句中的语义槽和相应的值。
(2)对话管理(dialogue management,DM)。对话管理分为两部分:对话状态跟踪(dialogue state tracking,DST)和对话策略优化(dialogue policy optimization,DTO)。对话管理模块的流程如图2所示。
图2 对话管理模块流程
1)对话状态跟踪。对话状态跟踪方法会在每一轮对话完成后更新并输出当前用户对话状态。其主要实现方法有基于规则的对话状态跟踪方法、基于统计方法的对话状态跟踪方法和基于神经网络的对话状态跟踪方法等。
2)对话策略优化。对话策略是指根据当前的对话状态选择合适的策略,而后生成相应的回复。对话策略优化的方法分为基于规则的方法和基于机器学习的方法两种。
1.2.2 End-to-End方法
基于端到端的任务型对话系统和管道方法不同,其不通过各个子模块的联结来获取回复,而是直接根据问题和系统回复去学习其中的映射关系。其方法可以大致分为两类:基于检索的方法和基于生成的方法。
2 系统设计与实现
本系统面向企业信息,为企业管理者提供数据查询服务。下面先介绍Rasa框架以及如何基于Rasa框架根据企业数据来搭建对话系统,然后再介绍Rasa对话系统和其他系统之间如何交互。
2.1 Rasa框架
Rasa对话系统基于Rasa框架,Rasa是一个基于机器学习实现多轮对话的开源机器人框架。其中包含两个主要模块Rasa_nlu与Rasa_core和一些其他的工具模块。Rasa_nlu模块是自然语言理解模型集合,主要包括实体识别、意图识别、特征提取、槽值提取等功能,主要完成对话系统中自然语言理解模块的功能;Rasa_core模块决定接下来系统对用户的回复,即实现与用户的交互逻辑,主要完成对话系统中对话管理模块的功能。其主要文件及其作用如表1所示。
表1 Rasa对话系统主要文件及其作用
2.2 自然语言理解(NLU)模块实现
针对企业服务领域数据,Rasa对话系统根据数据表常用字段在domain.yml文件中定义了24个意图(包括打招呼、感谢、再见等系统意图和具体查询意图)、28个实体和一些模板回复语句。根据意图定义的自然语言理解(对应表1中的nlu.md)部分训练数据示例如程序1所示。
以上述意图为例,“##”后为意图名称,该意图为查询园区内/外资企业的数量;“-”后为该意图具体训练数据,数据采用实体标注的形式。小括号内为实体名,中括号内为实体具体值。
2.3 对话管理(DM)模块实现
对话管理部分(对应表1中的story.md)训练数据以故事形式给出,程序1对应的训练数据示例如程序2所示。
以上述故事为例,“*”后为用户意图,“-”后表示系统的具体反馈动作,该示例表示系统识别到名称为capital_nature的槽的具体值为外资,并且填充槽值后做出名为action_num⁃ber_foreign_capital_enterprises的反馈动作。
系统做出的反馈动作以类的形式定义,需要继承Rasa对话系统提供的Action类并重写其方法,需要重写的方法如表2所示。
表2 Action类中需要重写的方法
2.4 领域数据校正
针对识别后的公司名(公司简称)与数据库中对应字段的匹配问题,系统使用基于动态规划的拼音相似度和余弦相似度来联合计算识别到的公司名和数据库中公司名的相似度,并根据设定阈值确定数据库中是否存在与识别到的公司名对应的数据。下面具体阐述系统使用的相似度计算方法。
将词看作一个字符串序列,设搜索词为,候选词集合为{,,,…,w},对于搜索词和每一个候选词w,设其长度分别为,,[][]为搜索词从0位置到位置组成字符串与第k个候选词w从0位置到位置组成字符串的相似度,则[][]为和w的相似度,动态规划的边界条件为[][0]=,[0][]=,其中0≤≤,0≤≤,其状态转移方程为:
公式(1)中,[][]可由以下三种情况转移而来:
(1)[][]=[-1][]+1,表示搜索词中0到1位置与当前候选词w中0到位置的相似度加1(减少的位置字符,1可视为与空字符是否相等)。
(2)[][]=[][-1]+1,表示搜索词中0到位置与当前候选词w中0到-1位置的相似度加1(w减少的位置字符,1可视与空字符是否相等)。
(3)[][]=[][-1]+cost,表示搜索词中0到-1位置与当前候选词w中0到-1位置的相似度加cos(tcost为的位置字符和w的位置字符是否相等)。
由于字符相等cost取0,字符不等cost取1,所以上述三种情况取最小值(结果越小相似度越高),即为[][]当前结果,当=时,[][]即为当前两个字符串的相似度。
算法会遍历所有候选词,使用上述方法找出和当前搜索词相似度最高的前三个候选词,分别再对每一个候选词和搜索词使用余弦相似度计算出联合相似度,找出相似度最高的一组。如果相似度最高的候选词大于设定阈值,那么认为候选词与搜索词匹配,否则认为无候选词和搜索词匹配。
在Rasa对话系统中使用该方法,虽然能在较大程度上解决公司名与数据库中对应字段的匹配问题,但是由于算法复杂度较高,仍然存在当候选词过多导致匹配速度变慢的问题。
2.5 对话系统设计
对话系统分为App端、Rasa对话系统和企业信息查询系统。App端负责系统和用户交互,并且把对话信息持久化到数据库中;Rasa对话系统负责接收App端的用户问题,经过处理后将结果返回给App端;企业信息查询系统负责查询企业信息,并可以对查询信息做简单统计,对外提供接口供Rasa对话系统调用。系统之间各个部分交互如图3所示。
图3 对话系统交互
用户在App输入对话问题,App端通过Http Post请求将问题发送到Rasa对话系统,对话系统通过Flask框架接收请求并且将问题和用户信息交给Rasa框架的NLU模块,NLU模块处理完成后将识别结果(意图和实体)交给到Rasacore模块,Rasa-core模块选择采取某个动作,再进入action模块调用API(企业信息查询系统)得到具体结果和tracker中的信息(用户对话历史和用户状态)一并返回给App端,App端显示回答信息并将该轮对话和tracker中的信息持久化到数据库中。
3 结语
随着人工智能技术的不断发展,人机对话系统对于社会发展的贡献会更加显著。任务型对话系统会和人工智能技术、大数据理论更加紧密结合,向更加成熟和稳定的方向发展。
本文提出的任务型对话系统可以替代原有的需要人工操作的后台管理系统,可以提高管理员进行企业管理时的效率。使用语音输入来替代繁琐的页面操作,可以让管理者从后台管理中脱离出来,达到即说即用即查的效果;同时也为面向企业服务领域的任务型对话系统提出一个工业级别可实现的解决方案。