聊天机器人系统的组成结构及关键技术
通常来说,聊天机器人的系统框架如下图所示,包含五个主要的功能模块。语音识别模块负责接收用户的语音输入并将其转换成文字形式交由自然语言理解模块进行处理。自然语言理解模块在理解了用户输入的语义之后将特定的语义表达式输入到对话管理模块中。对话管理模块负责协调各个模块的调用及维护当前对话状态,选择特定的回复方式并交由自然语言生成模块进行处理。自然语言生成模块生成回复文本输入给语音合成模块将文字转换成语音输出给用户。这里我们仅以文本输入形式为例介绍聊天机器人系统,语音识别和语音合成相关技术则不做展开介绍。
聊天机器人系统框架图
自然语言理解
自然语言理解的目的是为聊天任务生成一种语义表示形式[1]。通常来说,聊天机器人系统中的自然语言理解功能包括用户意图识别、用户情感识别、指代消解、省略恢复、回复确认及拒识判断等技术。
1)用户意图识别:用户意图又包括显式意图和隐式意图,显示的意图通常对应一个明确的需求,如用户输入“我想预定一个标准间”,明确表明了想要预定房间的意图,而隐式意图则较难判断,如用户输入“我的手机用了三年了”,有可能想要换一个手机或者显示其手机性能和质量良好。
2)用户情感识别:用户情感同样也包含显式和隐式两种,如用户输入“我今天非常高兴”,明确表明了喜悦的情感,而“今天考试刚刚及格”,则不太容易判断用户的情感。
3)指代消解和省略恢复:在对话过程中,由于人们之间具备聊天主题背景一致性的前提,用户通常使用代词来指代上文中的某个实体或事件,或者干脆省略一部分句子成分。但对于聊天机器人系统来说只有明确了代词指代的成分以及句子中省略的成分,才能正确理解用户的输入,给出合乎上下文语义的回复。因此需要进行代词的消解和省略的恢复。
4)回复确认:用户意图有时会带有一定的模糊性,这时就需要系统具有主动询问的功能,进而对模糊的意图进行确认,即回复确认。
5)拒识判断:聊天机器人系统应当具备一定的拒识能力,主动拒绝识别超出自身回复范围之外或者涉及敏感话题的用户输入。
当然,词法分析、句法分析以及语义分析等基本的自然语言处理技术对于聊天机器人系统中的自然语言理解功能也起到了至关重要的作用。
对话管理
对话管理功能主要协调聊天机器人的各个部分,并维护对话的结构和状态[9]。对话管理功能中涉及到的关键技术主要有对话行为识别、对话状态识别、对话策略学习及对话奖励等。
1)对话行为识别:对话行为是指预先定义或者动态生成的对话意图的抽象表示形式。分为封闭式和开放式两种,所谓封闭式对话行为,即将对话意图映射到预先定义好的对话行为类别体系。常见于特定领域或特定任务的对话系统,如票务预订、酒店预订等,例如:“我想预订一个标准间”,这句话被识别为Reservation(Standard_room)的对话行为。相对的,开放式对话行为则没有预先定义好的对话行为类别体系,对话行为动态生成。常见于开放域对话系统,如聊天机器人。例如:“今天心情真好啊”,这句话的对话行为可以通过隐式的主题、N元组、相似句子簇、连续向量等形式表达。
2)对话状态识别:对话状态与对话的时序及对话行为相关联,在t时刻的对话行为序列即为t时刻的对话状态。因此,对话状态的转移就由前一时刻的对话状态与当前时刻的对话行为决定。
3)对话策略学习:通常是通过离线的方式,从人-人对话数据中学习对话的行为、状态、流行度等信息,从而作为指导人-机对话的策略。这里流行度通常是指特定模式在语料库中的频度。
4)对话奖励:对话奖励是对话系统的中间级评价机制,但会影响对话系统的整体评价。常见的对话奖励有槽填充效率和回复流行度等。
自然语言生成
自然语言生成通常根据对话管理部分产生的非语言信息,自动生成面向用户的自然语言反馈[10]。近年来,在聊天机器人系统上的对话生成主要涉及检索式和生成式两类技术。
1)检索式对话生成技术:检索式的代表性技术[2]是在已有的人人对话语料库中通过排序学习技术和深度匹配技术找到适合当前输入的最佳回复。这种方法的局限是仅能以固定的语言模式进行回复,无法实现词语的多样性组合。
2)生成式对话生成技术:生成式的代表性技术[3,4]则是从已有的人人对话中学习语言的组合模式,是通过一种类似机器翻译中常用的“编码-解码”的过程去逐字或逐词地生成一个回复,这种回复有可能是从未在语料库中出现的、由聊天机器人自己“创造”出来的句子。
聊天机器人研究存在的挑战
当前,聊天机器人的研究存在的挑战包括:对话上下文建模、对话过程中的知识表示、对话策略学习、聊天机器人智能程度的评价等。
1)对话上下文建模:聊天是一个有特定背景的连续交互过程,在这一过程中经常出现上下文省略和指代的情况。一句话的意义有时要结合对话上下文或者相关的背景才能确定,而现有的自然语言理解主要基于上下文无关假设,因此对话上下文的建模成为聊天机器人系统的主要挑战之一。
2)对话过程中的知识表示:知识表示一直就是人工智能领域的重要课题,也是聊天机器人提供信息服务的基础。聊天机器人相关的领域任务可能有复杂的组成,牵涉很多的因素,只有了解这些因素的关系和相关的含义,才能与用户做到真正意义上的交流。
3)对话策略学习:对话策略涉及很多方面,其中最主要的是对话的主导方式。对话主导方式可以分为用户主导、系统主导和混合主导三种方式。在当前的对话管理研究中,系统应答的目标是自然、友好、积极,在不会发生问题的情况下,让用户尽可能自主,实现对话的混合主导。
4)聊天机器人智能程度的评价:目前聊天机器人智能程度的评价也是一项挑战。虽然可以采用一些通用的客观评价标准,如回答正确率、任务完成率、对话回合数、对话时间、系统平均响应时间、错误信息率等,对聊天机器人进行评价,评价的基本单元是单轮对话。但是,由于人机对话过程是一个连续的过程,而对不同聊天机器人系统的连续对话的评价仅能保证首句输入的一致性,当对话展开后,不同系统的回复不尽相同,因此不能简单地将连续对话切分成单轮对话去评价,于是设计合理的人工主观评价也许能够成为客观评价标准之外,对聊天机器人系统智能程度评价的重要指标。
聊天机器人在研究上的展望
随着聊天机器人研究的广泛开展,未来的研究将着眼于以下三方面:
1)端到端:得益于深度学习技术的发展,已有学者开始着手研究端对端的对话系统[5],即利用统一的模型代替序列化地执行自然语言理解、对话管理和自然语言生成的步骤,从用户的原始输入直接生成系统回复。
2)从特定域到开放域:随着大数据时代的到来,一方面,使得开放域的聊天机器人系统得以获取丰富的对话数据用于训练,另一方面,在大数据上可以自动聚类或抽取对话行为等信息,避免繁杂的人工定义。
3)更加关注“情商”:如果说传统的聊天机器人关注的是“智商”,即聊天机器人的信息和知识获取能力的话,那么今后的聊天机器人研究则更加注重“情商”,即聊天机器人的个性化情感抚慰、心理疏导和精神陪护等能力。
相信在不久的将来,一个能够让人们与之无所不谈的高“情商”聊天机器人将走入我们的日常生活,成为我们的朋友、同事甚至是家人。
[1]GinzburgJ,FernandezR.ComputationalModelsofDialogue[M]//TheHandbookofComputationalLinguisticsandNaturalLanguageProcessing.Wiley‐Blackwell,2010:429-481.
[2]Z.Ji,Z.Lu,H.Li.AninformationRetrievalApproachtoShort-textConversation.arXiv:1408.6988,2014.
[3]RitterA,CherryC,DolanWB.Data-DrivenResponseGenerationinSocialMedia.[J].EmpiricalMethodsinNaturalLanguageProcessing,2011:583-593.
[4]L.Shang,Z.Lu,andH.Li.NeuralRespondingMachineforShort-textConversation.InProceedingsofACL,2015.
[5]I.V.Serban.,A.Sordoni,Y.Bengioetal.BuildingEnd-To-EndDialogueSystemsUsingGenerativeHierarchicalNeuralNetworkModels.arXiv:1507.04808v2[cs.CL]25Nov2015.
智能机器人语音识别技术
图2检测结果的效果示意图
当话者带有呼吸噪声,或周围环境出现持续时间较短能量较高的噪声,或者持续时间长而能量较弱的噪声时,能零积门限检测算法就不能对这些噪声进行滤除,进而被判作语音进入识别模块,导致误识。图2(a)所示为室内环境,正常情况下采集到的带有呼气噪声的数字“0~9”的语音信号,利用能零积门限检测算法得到的效果示意图。最前面一段信号为呼气噪声,之后为数字“0~9”的语音。
从图2(a)直观的显示出能零积算法在对付能量较弱,但持续时间长的噪音无能为力。由此引出了双门限能零积检测算法。
所谓的双门限能零积算法指的是进行两次门限判断。第一门限采用能零积,第二门限为单词能零积平均值。也即在前面介绍的能零积检测算法的基础上再进行一次能零积平均值的判决。其中,第二门限的设定依据取决于所有实验样本中呼气噪声的平均能零积及最小的语音单词能零积之间的一个常数。如图2(b)所示,即为图2(a)中所示的语音文件经过双门限能零积检测算法得到的检测结果。可以明显看到,最前一段信号,即呼气噪声已经被视为噪音滤除。
1.2隐马尔可夫模型HMM
隐马尔可夫模型,即HMM是一种基于概率方法的模式匹配方法。它的应用是20世纪80年代以来语音识别领域取得的重要成果。
一个HMM模型可以表示为:
式中:π为初始状态概率分布,πi=P(q1=θi),1≤i≤N,表示初始状态处于θi的概率;A为状态转移概率矩阵,(aij)N×N,aij=P(qt+1=θj|qt=θi),1≤i,j≤N;B为观察值概率矩阵,B={bj(ot)},j=1,2,…,N,表示观察值输出概率分布,也就是观察值ot处于状态j的概率。
1.3模型训练
HMM有多种结构类型,并且有不同的分类方法。根据状态转移矩阵(A参数)和观察值输出矩阵(B参数)的不同有不同类型的HMM。
对于CHMM模型,当有多个观察值序列时,其重估公式由参考文档给出,此处不再赘述。
1.4概率计算
利用HMM的定义可以得出P(O|λ)的直接求取公式:
式(2)计算量巨大,是不能接受的。Rabiner提出了前向后向算法,计算量大大减小。定义前向概率:
那么有
(1)初始化
(2)递推
(3)终止
式(2)表示的是初始前向概率,bi(o1)为观察值序列处于t=1时刻在状态i时的输出概率,由于它服从连续高斯混合分布,故此值往往极小。根据大量实验观察,通常小于10-10,此值在定点DSP中已不能用Q格式表示。分析式(3)可以发现,随着时间t的增加,还会有大量的小数之间的乘法加法运算,使得新的前向概率值at+1更小,逐渐趋向于0,定点DSP采用普通的Q格式进行计算时便会负溢出,即便不发生负溢出也会大大丢失精度。因此必须寻找一种解决方法,在不影响DSP实时性的前提下,既不发生负溢出,又能提高精度。
2DSP实现语音识别
孤立词语音识别一般采用DTW动态时间规整算法。连续语音识别一般采用HMM模型或者HMM与人工神经网络ANN相结合。
为了能实时控制机器人,首先需要考虑的是能够实现实时地语音识别。而考虑到CHMM的巨大计算量以及成本因素,采用了数据处理能力强大,成本相对较低的定点数字信号处理器,即定点DSP。本实验采用的是TI公司多媒体芯片TMS320DM642。定点DSP要能准确、实时的实现语音识别,必须考虑2点问题:精度问题和实时性问题。
精度问题的产生原因已经由1.4节详细阐述,这里不再赘述。因此必须找出一种可以提高精度,而又不会对实时性造成影响的解决方法。基于以上考虑,本文提出了一种动态指数定标方法。这种方法类似于科学计数法,用2个32b单元,一个单元表示指数部分EXP,另一个单元表示小数部分Frac。首先将待计算的数据按照指数定标格式归一化,再进行运算。这样当数据进行运算时,仍然是定点进行,从而避开浮点算法,从而使精度可以达到要求。
对于实时性问题,通常,语音的频率范围大约是300~3400Hz左右,因而本实验采样率取8kHz,16b量化。考虑识别的实现,必须将语音进行分帧处理。研究表明,大约在10~30ms内,人的发音模型是相对稳定的,所以本实验中取32ms为一帧,16ms为帧移的时间间隔。
解决实时性问题必须充分利用DSP芯片的片上资源。利用EDMA进行音频数据的搬移,提高CPU利用率。采用PING—PONG缓冲区进行数据的缓存,以保证不丢失数据。CHMM训练的模板放于外部存储器,由于外部存储器较片内存储器的速度更慢,因此开启CACHE。建立DSP/BIOS任务,充分利用BIOS进行任务之间的调度,实时处理新到的语音数据,检测语音的起止点,当有语音数据时再进入下一任务进行特征提取及识别。将识别结果用扬声器播放,并送入到机器人的控制模块。
实验中,采用如图3的程序架构。
图3机器人识别软件框图
3机器人控制
机器人由自然条件下的语句进行控制。这些语句描述了动作的方向,以及动作的幅度。为了简单起见,让机器人只执行简单命令。由手机进行遥控,DSP模块识别出语音命令,送控制命令到ARM模块,驱动左右机械轮执行相应动作。
3.1硬件结构
机器人的硬件结构如图4所示。
图4机器人硬件结构
机器人主要有2大模块,一个是基于DSP的语音识别模块;另一个是基于ARM的控制模块,其机械足为两滑轮。由语音识别模块识别语音,由控制模块控制机器人动作。
3.2语音控制
首先根据需要,设置了如下几个简单命令:前、后、左、右。机器人各状态之间的转移关系如图5所示。其中,等待状态为默认状态,当每次执行前后或左右转命令后停止,即回到等待状态,此时为静止状态。
图5机器人状态
语音的训练模板库由4个命令加10个阿拉伯数字共14个组成,如下所示。
命令:“前”、“后”、“左”、“右”;
数字:“0~9”。
命令代表动作的方向,数字代表动作的幅度。当执行前后命令时,数字的单位为dm,执行左右转弯命令时,数字的单位为角度单位的20°。每句命令句法为命令+数字。例如,语音“左2”表示的含义为向左转弯40°,“前4”表示向前直行4dm。
机器人语音控制的关键在于语音识别的准确率。表1给出了5个男声样本的识别统计结果。
表1识别统计结果
4结语
工作中,成功地将CHMM模型应用于定点DSP上,并实现了对机器人的语音控制。解决了CHMM模型巨大计算量及精度与实时性之间的矛盾。提出了一种新的端点检测算法,对于对抗短时或较低能量的环境噪音具有明显效果。同时需要指出的是,当语音识别指令增多时,则需要定义更多的句法,并且识别率也可能会相应降低,计算量也会相应变大。下一步研究工作应更注重提高大词汇量时的识别率及其鲁棒性。返回搜狐,查看更多