专利名称:人机互动的口语对话系统及其实现方法
技术领域:
本发明涉及一种采用语音识别(ASR, Automatic Speech Recognition)、对话管理 系统(Dialog Management System)、自然语言理角军(NLU,NatureLanguage Understanding) 技术的人机互动的口语对话系统。
背景技术:
本说明书中的技术术语定义如下
语音识别,是让机器将语音转换为相应文本的技术。
语义,是指文本(语句)的含义。由于表述方式不同,不同的语句可能是同一语义。
语料,是指大量文本的集合,其中的文本是经过整理并按特定的格式标注过的。
词法,是指文本内词语的构成法则,如词性。
词性标签,是一种对名词、动词、形容词等词性进行标注的方法。
语法,是指文本语句的构成规律。
口语对话对于提高外语水平至关重要,目前市场上的外语口语学习产品,一般以 跟读为主。系统设定主题场景,用户跟着系统练习相关句型,系统对用户的发音进行评分。 其对话模式仅限于在固定的2 3种回答语句中选择。发明内容
本发明所要解决的技术问题是提供一种人机互动的口语对话系统,该系统中人和 机器均可自由主导对话过程(Mixed Initiative Conversation)。用户可以主动谈论自己 感兴趣的话题,机器会顺着用户的话题进行对话。一旦用户无话可谈,机器会自动挑选相关 话题和用户对话,从而营造一种真实的口语对话语言环境。为此,本发明还要提供所述人机 互动的口语对话系统的实现方法。
为解决以上技术问题,本发明人机互动的口语对话系统包括
语音识别模块,将用户的语音识别为文字;
纠错模块,将语音识别模块输出的文字进行词法和语法层面的纠错;
自然语言理解模块,将纠错模块输出的纠错后的文字识别为语义;
对话管理模块,根据自然语言理解模块输出的语义,生成对话的语义;
自然语言生成模块,将对话管理模块输出的对话语义生成为对话文字;
语音合成模块,将自然语言生成模块输出的对话文字生成为对话语音。
所述人机互动的口语对话系统的实现方法包括如下步骤
第I步,收集口语语料形成语料库;
第2步,用户的语音通过语音识别模块I被识别为文字;
第3步,所述文字通过纠错模块2进行词法和语法层面的纠错;
第4步,纠错后的文字通过自然语言理解模块3被识别为语义;
第5步,对话管理模块4根据所述语义,生成对话的语义;
第6步,所述对话语义通过自然语言生成模块5生成为对话文字;
第7步,所述对话文字通过语音合成模块6生成为对话语音。
本发明人机互动的口语对话系统具有如下有益效果
首先,对话管理模块能回答用户提问,也能主动和用户谈论相关话题,从而营造一 种真实的口语对话语言环境;
其次,纠错模块能弥补语音的误识别、口语语法的不严密,减少自然语言理解的无 法理解情况,使得人机对话更顺畅;
最后,语音合成模块还可增加多媒体视听效果,加深用户的记忆。
图1为本发明人机互动的口语对话系统的结构示意图2为形成语料库的流程图3为纠错模块进行纠错的流程图4为对话管理模块生成对话语义的流程图。
图中附图标记说明
I为语音识别模块;2为自动纠错模块;3为自然语言理解模块;4为对话管理模 块;5为自然语言生成模块;6为语音合成模块。
具体实施方式
下模块
骤
请参阅图1,这是本发明人机互动的口语对话系统的结构示意图。该系统包括有以-语音识别模块1,将用户的语音识别为文字-纠错模块2,将语音识别模块I输出的文字进行词法和语法层面的纠错; -自然语言理解模块3,将纠错模块2输出的纠错后的文字识别为语义;-对话管理模块4,根据自然语言理解模块3输出的语义,生成对话的语义; -自然语言生成模块5,将对话管理模块4输出的对话语义生成为对话文字; -语音合成模块6,将自然语言生成模块5输出的对话文字生成为对话语音。所述人机互动的口语对话系统的实现方法包括如下步骤第I步,收集口语语料形成语料库;第2步,用户的语音通过语音识别模块I被识别为文字;第3步,所述文字通过纠错模块2进行词法和语法层面的纠错;第4步,纠错后的文字通过自然语言理解模块3被识别为语义;第5步,对话管理模块4根据所述语义,生成对话的语义;第6步,所述对话语义通过自然语言生成模块5生成为对话文字;第7步,所述对话文字通过语音合成模块6生成为对话语音。请参阅图2,上述人机互动的口语对话系统的实现方法的第I步具体包括如下步第1.1步,收集口语语句,例如可采用人工编辑、Wizard of OZ等方法。第1. 2步,分析、识别口语对话的规划(Agenda),即识别出各个语句的语义。所有语句的语义可分为问题语义和回答语义两大类。
第1. 3步,将所有问题语义的语义分为多个对话主题,每个对话主题用一颗语义树表示;语义树是一种树状的数据结构,包括一个根节点、多个子节点、多个孙节点……,每个节点表示一个问题语义;
语义树的一个节点包括它所表示的问题语义的名称、该节点的类型、该节点的子节点的名称等。
下面就是语义树的一个节点的示例
QA_GREETING
type = OR
next = 0R(Q_FIRST_MEET, Q_L0NG_TIME, Q_NICEMEET)
其中QA_GREETING是问题语义(该节点)的名称,该节点的类型是0R。该节点的子节点的名称是Q_FIRST_MEET、Q_L0NG_TIME, Q_NICEMEET中的一个且仅为一个,分别表示初次见面、好久未见和一般见面的情况。
语义树上的节点根据其与子节点的链接关系可以分为三种类型,分别是顺序类型 (SEQ)、或者类型(OR)、任意类型(ANY)。
顺序类型表示该节点之后按顺序跟着一个子节点,即当前问题语义之后按顺序跟着一个问题语义。
或者类型表示该节点之后跟着多个子节点,只能选择这多个子节点中的一个且仅有一个子节点,即当前问题语义之后根据不同情况从多个问题语义中只能选择一个。
任意类型表示该节点之后跟着多个子节点,可以以任意顺序选择这多个子节点中的一个或多个子节点,即当前问题语义之后可以从多个问题语义中任意选择。
或者类型与任意类型的区别在于假设节点A有三个子节点Al、A2、A3,当节点A 为或者类型,则对话管理模块只能选择子节点Al、A2、A3中的一个,一旦选择完毕,其余子节点就不能再选择了。而当节点A为任意类型,则对话管理模块只能选择子节点A1、A2、A3 中的一个,一旦选择完毕,对话管理模块还可以选择其余子节点。
第1. 4步,将所收集的语句编译为多个二进制文件,至少包括
主题定义文件,用于将所有语句分为多个对话主题;
语义树定义文件,用于将每个对话主题中的所有问题语义形成一个树状的数据结构即语义树,语义树的每个节点表示一个问题语义,每个节点包括语义ID号、类型、各子节点的名称等。
语义定义文件,用于每个问题语义及其对应的回答语义,以及每个问题语义所对应的一组具体语句、每个回答语义所对应的一组具体语句。
语句定义文件,管理所有语句以及各语句的部分发音标注和全部发音标注。部分发音标注的标注内容较少,效率高但不精确,例如为Double Metaphone发音标注法。 全部发音标注的标注内容较多,效率低但很精确,例如为IPA(International Phonetic Association)发音标注法。
BK树定义文件,建立所有语句间的部分发音标注的Levenshtein距离,以及所有语句间的全部发音标注的Levenshtein距离。这可以采用Burkhard-Keller树算法实现。
所形成的多个二进制文件经过一系列数据转换后,便可用于不同的语音识别引擎1,并具体应用于纠错模块2和对话管理模块4。
总而言之,语料库是大量语句(文本)的集合,并且语料库对这些语句进行了加工处理,形成了多个二进制文件。所述加工处理例如提取各语句语义,对所有语句按照内容分为多个主题,每个主题中的各个问题语义之间的关系用语义树描述等。
所述语音识别模块I将用户的语音识别为文字,该功能由语音识别引擎完成。语音识别引擎的识别效果和语言模型直接相关,对口语对话的大词汇量连续语音识别,一般采用SLM(Statistical Language Model)语言模型。对主题词搜索的语音识别,一般采 M SRGS (Speech Recognition Grammar Specification)语言模型,特别是该模型中的 Hotword(也称 Magic Word)模式。
本发明所述语音识别模块I例如可采用3元(3-gram) SLM模型作为主要的语音识别引擎,这是一种现有技术,其优点是适合于大词汇量连续语音识别、语料增加时语言识别模型便于维护。
根据本发明人机互动的口语对话系统部署的硬件设备的不同,可采用桌面版语音识别引擎、嵌入式语音识别引擎或服务器版语音识别引擎,分别对应于个人计算机、便携式电子设备、服务器——客户端系统。
所述纠错模块2将语音识别模块I输出的文字进行词法和语法层面的纠错。词法层面可采用诸如Levenshtein Distance算法,比对语料库中相关语句,纠正语音识别文字的错误单词。语法层面对单词进行词性标签(Part of Speech Tagging),并分析语法结构 (Grammatical Structure)纠正语音识别文字的基本语法错误。
请参阅图3,本发明人机互动的口语对话系统的实现方法的第3步具体包括如下步骤
第3.1步,当语音识别模块I识别出的文字与语料库中的语句相匹配,则纠错模块 2认为没有发生错误,原样输出;
当语音识别模块I识别出的文字与语料库中的所有语句都不匹配,则纠错模块2 认为发生了错误,进入第3. 2步 纠错;
第3. 2步,纠错模块2将该错误语句作为输入,利用Burkhard-Keller树算法找到在语料库中与该错误语句的部分发音标注法的距离小于或等于η的所有语句;η根据语句长度不同而不同,一般为该错误语句所含单词数的四分之一到三分之一,例如语句由12个单词组成,则η取值为3或4。
第3. 3步,纠错模块2计算该错误语句与第3. 2步找到的各个语句之间的全部发音标注法间的距离,例如计算该错误语句与找到的各个语句之间的IPA发音标注间的 Levenshtein距离。并按计算出的距离按由小到大的顺序排序;
第3. 4步,如果第3. 3步计算出的距离的最小值超过阀值,则纠错模块2认为纠错失败,输出错误提示信息;该错误提示信息例如要求重新向语音识别模块I输入新的语音信号。
如果第3. 3步计算出的距离的最小值在阀值以内,则纠错模块2将与该错误语句具有最小的全部发音标注法的距离的语句作为纠错结果输出;
所述阀值的取值一般为该错误语句所含字符数的四分之一到三分之一,例如语句由48个字符组成,则所述阀值的取值范围为12至16。。
本发明所述纠错模块2采用词法纠错作为主要纠错方式,并采用UCREL CLAWS7词 性标签法进行语法结构分析。该纠错模块2能将文字中的单词错误(可能是用户发音错 误,也可能是语音识别引擎导致的相似音识别错误)、语法错误(如第三人称单数等)自动 纠正。该纠错模块2能弥补语音识别模块I的误识别、口语语法的不严密,减少自然语言理 解模块3无法理解的情况,使得人机对话更顺畅。
所述自然语言理解模块3将纠错模块2输出的纠错后的文字识别为语义,也就 是理解文字的语义。该自然语言理解模块3将纠错后的文字归纳为该语句所表达的语义 (Semantic)。说法不同、意思相同的语句归纳为相同语义。该功能可采用乔姆斯基语言学 理论,根据词汇、句法规则、语义规则并结合逻辑推导规则和知识库来理解语义。该功能也 可采用SSM(Statistical Semantic Model),使用统计学原理对事先标注的大量语料通过 机器学习算法(Machine Learning Algorithm)进行训练(Training),经训练后的语义模型 用于文字的语义识别。
本发明所述自然语言理解模块3例如可采用SSM方式,这是一种现有技术,其优点 是语料增加时便于维护,且随着语料增长,所述人机互动的口语系统的用户体验同步增长。
所述对话管理模块4根据自然语言理解模块3输出的语义,生成对话的语义,也 就是在人机对话过程中自动产生计算机方的所有语义。该对话管理模块4根据对话上下 文(Context)及用户输入语义,推导出机器的答复语义。此处答复是泛指即如果用户是提 问,机器为回答语义;如果用户是回答,则机器可能是下一个相关问题语义。答复语义也称 对话语义。
对话管理一般分为基于知识(Knowledge-based)的对话管理系统和数据驱动 (Data-driven)的对话管理系统。前者主要采用规划(Agenda)的方式,规划模型要求从语 句中事先分析、识别出规划。后者通过对事先标注的大量语料采用马尔科夫决策过程处理 (Markov Decision Processing)生成对话模型。
请参阅图4,所述人机互动的口语对话系统的实现方法的第5步具体包括
第5.1步,当用户提出问题,则对话管理模块首先判断用户所提问题属于哪一个 主题,再从该主题的语义树中找到用户所提问题的语义对应的节点,并从该节点中找到该 问题语义的回答语义输出;后续的自然语言生成模块5再从该回答语义对应的一组语句中 挑选一句回答用户。
当用户未提出问题,则进入第5. 2步;
第5. 2步,对话管理模块判断用户最近回答的问题属于哪一个主题,再从该主题 的语义树中找到用户最近回答的问题的语义对应的节点,再将该节点作为当前节点;
第5. 3步,如果当前节点是顺序类型,选择当前节点的下一子节点作为候选节点;
当前节点是或者类型,选择当前节点的下多个子节点的一个且仅为一个子节点作 为候选节点;
当前节点是任意类型,选择当前节点的下多个子节点的任意一个子节点作为候选 节点;
第5. 4步,判断候选节点对应的问题语义是否为用户曾提问过的、或用户曾回答 过的、或与用户之前的回答相矛盾的、或与之前选择的节点类型相矛盾的(主要指之前对 话管理模块对于或者类型的节点,一旦选择一个子节点后,其余子节点就被排除在后续选择之外的情况);
如有一项为是,则将候选节点作为当前节点,返回第5. 3步;
如果全部为否,则将候选节点的问题语义输出。
进一步地,如果当前节点的所有子节点都不符合第5. 4步(即都至少有一项为 是),则回溯处理当前节点的父节点。如果当前语义树上已没有可以处理的父节点,则对话 管理模块4主动向用户说再见。
本发明所述对话管理模块4采用基于知识的对话管理系统,其优点是形成了人机 双向互动的对话环境,且随着语料增长,所述人机互动的口语对话系统的用户体验同步增 长。
所述自然语言生成模块5将对话管理模块4输出的对话语义生成为对话文字,也 就是生成表达特定语义的文字。该自然语言生成模块5模块根据机器答复语义,对话上下 文及相关参数(如用户英语水平),从语料库(Corpora)中挑选生成具体的对话文字。
本发明所述自然语言生成模块5例如采用语句模板的方式实现,可根据语义从对 应的多个语句中选择一句,选择的依据包括上下文关系、用户的外语水平等。这是一种现有 技术,优点是实现简便。
语音合成模块6将自然语言生成模块5输出的对话文字生成为对话语音,也 就是实时生成文字对应的语音。该功能由语音合成引擎完成,语音合成引擎的呈现 (Presentation)模块采用语音合成(Text To Speech)和/或预录音方式将对话语音播放 给用户听,还可同时通过多媒体动画、视频等形式在用户界面展示。
本发明所述语音合成模块6采用第三方语音合成引擎,这是一种现有技术,在此 不再赘述。
以上仅为本发明的优选实施例,并不用于限定本发明。对于本领域的技术人员来 说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同 替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种人机互动的口语对话系统,其特征是,包括 语音识别模块,将用户的语音识别为文字; 纠错模块,将语音识别模块输出的文字进行词法和语法层面的纠错; 自然语言理解模块,将纠错模块输出的纠错后的文字识别为语义; 对话管理模块,根据自然语言理解模块输出的语义,生成对话的语义; 自然语言生成模块,将对话管理模块输出的对话语义生成为对话文字; 语音合成模块,将自然语言生成模块输出的对话文字生成为对话语音。
2.如权利要求1所述的人机互动的口语对话系统的实现方法,其特征是,包括如下步骤 第I步,收集口语语料形成语料库; 第2步,用户的语音通过语音识别模块被识别为文字; 第3步,所述文字通过纠错模块进行词法和语法层面的纠错; 第4步,纠错后的文字通过自然语言理解模块被识别为语义; 第5步,对话管理模块根据所述语义,生成对话的语义; 第6步,所述对话语义通过自然语言生成模块生成为对话文字; 第7步,所述对话文字通过语音合成模块生成为对话语音。
3.根据权利要求2所述的人机互动的口语对话系统的实现方法,其特征是,所述方法第I步具体包括如下步骤 第1.1步,收集口语语句; 第1. 2步,识别出各个语句的语义;所有语句的语义可分为问题语义和回答语义两大类; 第1. 3步,将所有问题语义的语义分为多个对话主题,每个对话主题用一颗语义树表示;语义树是一种树状的数据结构,包括一个根节点、多个子节点、多个孙节点……,每个节点表示一个问题语义; 语义树的一个节点包括它所表示的问题语义的名称、该节点的类型、该节点的子节占. 语义树上的节点根据其与子节点的链接关系分为三种类型,分别是顺序类型、或者类型、任意类型 顺序类型表示该节点之后按顺序跟着一个子节点; 或者类型表示该节点之后跟着多个子节点,只能选择这多个子节点中的一个且仅有一个子节点; 任意类型表示该节点之后跟着多个子节点,可以以任意顺序选择这多个子节点中的一个或多个子节点; 第1. 4步,将所收集的语句编译为多个二进制文件,至少包括 主题定义文件,用于将所有语句分为多个对话主题; 语义树定义文件,用于将每个对话主题中的所有问题语义形成一个树状的数据结构即语义树,语义树的每个节点表示一个问题语义,每个节点包括语义ID号、类型、各子节点;语义定义文件,用于每个问题语义及其对应的回答语义,以及每个问题语义所对应的一组具体语句、每个回答语义所对应的一组具体语句;语句定义文件,管理所有语句以及各语句的部分发音标注和全部发音标注; BK树定义文件,建立所有语句间的部分发音标注的Levenshtein距离,以及所有语句间的全部发音标注的Levenshtein距离。
4.根据权利要求2所述的人机互动的口语对话系统的实现方法,其特征是,所述方法第3步具体包括如下步骤 第3.1步,当语音识别模块识别出的文字与语料库中的语句相匹配,则纠错模块认为没有发生错误,原样输出; 当语音识别模块识别出的文字与语料库中的所有语句都不匹配,则纠错模块认为发生了错误,进入第3. 2步纠错; 第3. 2步,纠错模块将该错误语句作为输入,利用Burkhard-Keller树算法找到在语料库中与该错误语句的部分发音标注法的距离小于或等于η的所有语句;η的取值范围为所述错误语句所含单词数的四分之一到三分之一; 第3. 3步,纠错模块计算该错误语句与第3. 2步找到的各个语句之间的全部发音标注法间的距离,并按计算出的距离按由小到大的顺序排序; 第3. 4步,如果第3. 3步计算出的距离的最小值超过阀值,则纠错模块认为纠错失败,输出错误提示信息; 如果第3. 3步计算出的距离的最小值在阀值以内,则纠错模块将与该错误语句具有最小的全部发音标注法的距离的语句作为纠错结果输出; 所述阀值的取值范围为所述错误语句所含字符数的四分之一到三分之一。
5.根据权利要求3或4所述的人机互动的口语对话系统的实现方法,其特征是,所述部分发音标注法为Double Metaphone发音标注法,所述全部发音标注法为IPA发音标注法。
6.根据权利要求2所述的人机互动的口语对话系统的实现方法,其特征是,所述方法第5步具体包括 第5.1步,当用户提出问题,则对话管理模块首先判断用户所提问题属于哪一个主题,再从该主题的语义树中找到用户所提问题的语义对应的节点,并从该节点中找到该问题语义的回答语义输出; 当用户未提出问题,则进入第5. 2步; 第5. 2步,对话管理模块判断用户最近回答的问题属于哪一个主题,再从该主题的语义树中找到用户最近回答的问题的语义对应的节点,再将该节点作为当前节点; 第5. 3步,如果当前节点是顺序类型,选择当前节点的下一子节点作为候选节点;当前节点是或者类型,选择当前节点的下多个子节点的一个且仅为一个子节点作为候选节点; 当前节点是任意类型,选择当前节点的下多个子节点的任意一个子节点作为候选节占. 第5. 4步,判断候选节点对应的问题语义是否为用户曾提问过的、或用户曾回答过的、或与用户之前的回答相矛盾的、或与之前选择的节点类型相矛盾的; 如有一项为是,则将候选节点作为当前节点,返回第5. 3步; 如果全部为否,则将候选节点的问题语义输出。
7.根据权利要求6所述的人机互动的口语对话系统的实现方法,其特征是,所述方法第5. 4步中,如果当前节点的所有子节点都至少有一项为是,则回溯处理当前节点的父节点;如果当·前语义树上已没有可以处理的父节点,则对话管理模块主动向用户说再见。
全文摘要
本发明公开了一种人机互动的口语对话系统,包括语音识别模块,将用户的语音识别为文字;纠错模块,将语音识别模块输出的文字进行词法和语法层面的纠错;自然语言理解模块,将纠错模块输出的纠错后的文字识别为语义;对话管理模块,根据自然语言理解模块输出的语义,生成对话的语义;自然语言生成模块,将对话管理模块输出的对话语义生成为对话文字;语音合成模块,将自然语言生成模块输出的对话文字生成为对话语音。本发明还公开了所述人机互动的口语对话系统的实现方法。该系统能回答用户提问,也能主动和用户谈论相关话题,从而营造一种真实的口语对话语言环境。
文档编号G09B5/04GK103000052SQ201110275440
公开日2013年3月27日 申请日期2011年9月16日 优先权日2011年9月16日
发明者张国顺 申请人:上海先先信息科技有限公司