实施例一
本申请实施例提供了一种对话系统构建方法,图2为本申请实施例构建的一种对话系统结构框图。其中,本申请实施例构建的对话系统包括:用于对问题生成应答的第一问答模型和第二问答模型,其中,第一问答模型用于生成包含问题部分应答内容的第一应答,第二问答模型用于结合所述第一应答生成包含问题完整应答内容的第二应答。
本申请实施例中,第一问答模型和第二问答模型为机器学习模型,机器学习模型是一种基于机器学习算法构建的算法模型,机器学习模型能从一类数据中自动分析获得规律,并利用规律对未知数据进行预测。
在机器学习技术在应用到不同的技术领域时,会用到不同的机器学习模型,本申请在自然语言处理技术领域构建问答模型时,可以使用sequence to sequence模型。
sequence to sequence模型(缩写为:Seq2Seq模型)是一种建模两个序列间关系的通用深度学习模型,一个标准的Seq2Seq模型通常由两部分组成:Encoder(编码器)和Decoder(解码器)。Encoder负责依次读入输入序列的每个单位,将其编码成一个模型的中间表示(一般为一个向量)。Decoder负责在给定上下文向量的情况下预测出输出序列。Seq2Seq模型在自然语言处理领域中得到了广泛的应用,通过使用大量的语料对Seq2Seq模型进行训练,使Seq2Seq模型可以从大量的语料训练中学习到潜在的回答模式,从而可以生成语料中从未出现过的回答语句。
图3为本申请实施例提供的一种对话系统构建方法的流程图,如图3所示,本申请实施例提供的一种对话系统构建方法包括以下步骤:
步骤S110,获取对话语料,所述对话语料为预设问题和预设答案组成的问答对。
在使用Seq2Seq模型等机器学习模型训练获得问答模型时,需要使用对话语料对机器学习模型进行训练,对话语料中需要包括预设问题和预设答案,以使机器学习模型能够建立起从问题序列到答案序列的关联映射,从而是训练获得的问答模型具备对未知问题给出应答的能力。
本申请中,根据对话系统应用场景的不同,可选择不同语言风格和内容的对话语料,这些对话语料均以问答对的形式出现。例如,当对话系统用于语音助手时,对话语料的内容可以为:
预设问题:今天空气怎么样?
预设答案:今天空气很好,适合户外运动。
在使用训练语料训练问答模型时,为了提高问答模型对未知问题的应答能力,通常需要向机器学习模型中输入大量的训练语料,为了获取大量的训练语料,本申请在步骤S110中,可以从预先设置的指定类型的语料库中获取对话语料,例如指定获取与生活信息服务有关对话语料。或者,也可以使用网络爬虫工具,对互联网内容进行爬取,从爬取到的内容中获得对话语料,由于互联网中的信息日新月异,更新迅速,新的网络热门话题等层出不穷,因此,使用网络爬虫工具,从互联网中爬取对话语料的方式能够紧随网络流行趋势,第一时间地获取有关网络热门话题的热门对话语料,从而使通过这些对话语料训练的问答模型对网络热门话题具有更高的应答能力。
图4为本申请实施例提供的一种对话系统构建方法步骤S110的流程图,在一种可选择的实施方式中,如图4所示,步骤S110可以包括以下步骤:
步骤S111,获取语料素材;所述对话语料为包含对话内容的文本。
在步骤S111中,可通过预设的语料库或使用网络爬虫等手段获取语料素材,语料素材以包含对话内容的文本的形式体现,例如从网页的文本信息中爬取的包含对话内容的文本。
需要说明的是,本申请中的语料素材也可来从语音信息中获得,此时,通过语音识别方式将语音信息转化为包含对话内容的文本。
步骤S112,删除所述语料素材中的无效语料,获得纯净语料。
本申请中的无效语料包括句法成分不完整的对话,包含表情符、英文字符或其他特殊字符的对话,包含敏感词的对话等。其中,无效语料在对话模型的训练过程中没有贡献,甚至会造成干扰,影响最终构建的问答模型的质量。例如,如果用于训练的对话语料中答案不完整,当对话模型对未知语料进行应答时,可能会给出不完整的应答,从而影响应答质量;如果用于训练的对话语料中包特殊字符,当对话模型对未知语料进行应答时,可能会给出包含特殊字符的应答,甚至是乱码;如果用于训练的对话语料中包含敏感词,当对话模型对未知语料进行应答时,可能会给出包含敏感词的应答,从而与社会文明建设相违背,甚至会违反我国的法律法规,这对于对话系统是不允许的。
在一种可选择的实施方式中,可以设置一个无效字符库,无效字符库中可包含表情符、英文字符、敏感词、特殊字符以及其他类型的字符。在步骤S112中,根据无效字符库识别并删除语料素材中包含无效字符的无效语料,从而获得纯净语料。
在一种可选择的实施方式中,无效字符库中的内容可根据对话系统的应用场合不同而做出变化,例如:当对话系统应用于政府、银行的服务性窗口时,要求对话系统的应答内容要书面化,无效字符库中除了包含上述示出的字符类型外,还可以包括口头语的文本,例如“哎”“呃……”等。此外,无效字符库可设置修改接口,修改接口可接收字符修改信息,并根据字符修改信息改变无效字符库中的内容,包括:新增、删除字符,对字符依据类型进行分组,新增、删除字符类型,对某字符类型设置启用或不启用状态等。
步骤S113,提取所述纯净语料中的所述问答对,生成包含所述问答对的对话语料。
在步骤S113中,问答对以一问一答的形式出现,并被归一化成机器学习模型可识别的格式。
示例地,本申请中问答对的形式为:
{question,answer}
其中,question为问答对中的预设问题文本,answer为问答对中的预设答案文本。例如,纯净语料的内容为:
皮特问:“你们是哪里人?”小兰回答道:“我和他来自中国北京。”
提取上述语料中的问答对,预设问题:你们是哪里人,预设答案:我和他来自中国北京。归一化后生成的问答对为:
{你们是哪里人,我和他来自中国北京}
由此可以看出,本申请在步骤S113中,将预设问题和预设答案以问答对的形式做归一化存储,便于机器学习模型处理,同时,使训练语料能够以问答对为单位进行操作,便于管理。
步骤S120,从所述预设答案中获取引导词。
本申请中,引导词可以为动词或名词。其中,动词在一个完整的语句中常作为谓语使用,能够表达语句中主语的动作或意图,对语句的语义有引导作用,因此,动词是与语句语义存在关联的语句成分;此外,名词在语句中常表达某一概念,而对话的内容常通过这个概念展开,例如,在步骤S113中示例出的问答对中,“我和他来自中国北京”中,“北京”为名词,表示地名,而问答对中的内容均以地名展开,因此,名词在语句中也对语义有引导作用,属于与语句语义存在关联的语句成分。
基于动词和名词在语句中的上述作用,本申请在步骤S120中,可随机从预设答案中获取一个名词或动词作为引导词。本申请中,之所以随机获取引导词,是由于在预设答案中,动词或名词的数量不唯一,而提取不同的引导词会对后续的模型训练产生不同的结果,因此,为了提高训练结果的多样性,进而使本申请构建的对话系统对未知问题也能给出多样性的回答,本申请在动词和名词中随机获取一个作为引导词,使同一个训练语料在多次模型训练过程中由于引导词不同,得到的训练结果也不同,从而,提高了训练最终得到的对话系统应答的多样性。
图5为本申请实施例提供的一种对话系统构建方法步骤S120的流程图,在一种可选择的实施方式中,如图5所示,步骤S120可以包括以下步骤:
步骤S121,获取所述预设答案的分词序列,所述分词序列包含所述预设答案的全部分词。
本申请中,可以使用中文分词(也称:中文切词)技术,对预设答案进行分词。中文分词(Word Segmentation,WS)指的是将汉字序列切分成词序列。因为在汉语中,词是承载语义的最基本的单元。分词是信息检索、文本分类、情感分析等多项中文自然语言处理任务的基础。在中文分词中,可以使用基于字符串匹配的分词方法,首先,设置一个分词库词典,然后,将待分词的预设答案与分词库词典中已有的分词进行匹配,并根据匹配结果对预设答案进行分词。此外,除了使用中文分词技术进行分词以外,还可以使用依存句法分析、基于词频统计分词等其他分词方法进行分词,本申请对通过使用何种方法获取预设答案的分词序列不做具体限定,在本申请的技术构思下,本领域技术人员可对分词方法自行选择。
示例地,预设答案为:我和他来自中国北京,该预设答案的分词序列为:
我/和/他/来自/中国/北京
在上述示例以及下文中出现的“/”,是为了在本申请实施例中向本领域技术人员清楚地表示步骤S121对预设答案的分词结果,不属于预设答案分词序列中真实存在的元素。
步骤S122,根据所述分词序列,从所述预设答案中获取一个指定词性的分词作为引导词,所述指定词性包括动词和名词。
在步骤S122中,首先找出分词序列中词性为动词或名词的分词,为了实现这一过程,本申请可基于中文语言中的常用表,如《现代汉语常用词表》等,构建动词库和名词库,将分词序列中的每一个分词与动词库或名词库中的词进行比对,从而可以从分词序列中找到动词和名词成分。例如“我/和/他/来自/中国/北京”中包含有名词:中国、北京,动词:来自。
需要补充说明的是,本申请实施例在步骤S122中,除了构建动词库和名词库用于找出分词序列中的动词和名词以外,还可以通过机器学习中的依存句法分析等方法从分词序列中找到动词和名词。此外,在每一个分词与动词库或名词库中的词进行比对时,可以从句首的分词开始,依次向句尾比对,可以从句尾开始的分词开始,以此向句首比对,也可以从句首到句尾、句尾到句首进行两次比对,综合两次比对结果找出动词和名词。
在一种可选择的实施方式中,当从分词序列中找到动词和名词之后,可以从已找到的动词和名词中随机选择一个作为引导词,一种随机选择的方式为:按照每个名词或动词在分词序列中的顺序,对每个名词和动词依序编号然后在编号所在的数值范围内生成随机整数,将得到的随机整数相同编号的名词或动词作为引导词。
示例地,在“我/和/他/来自/中国/北京”中,名词和动词的编号为:来自-0,中国-1,北京-2,随机整数的数值范围A∈{0,1,2},然后在该数值范围A内生成一个随机整数,例如:1,对应的引导词为“来自”。
在一种可选择的实施方式中,可以对名词或动词设定优先级,例如:设定动词的优先级高于名词的优先级,当分词序列中同时包含动词和名词时,优先选取动词为引导词,当动词有多个时,可按照本申请实施例中示出的随机选择的方式选择其中一个动词为引导词。参见前文所述,动词和名词在语句中对语义的引导作用有所不同,具体为:动词在一个完整的语句中常作为谓语使用,能够表达语句中主语的动作或意图,而名词在语句中常表达某一概念,对话的内容常通过这个概念展开;导致了使用动词或使用名词作为引导词对后续的模型训练会产生不同的影响,因此,本申请实施例中,通过设置动词或名词优先级的方式,可以控制引导词的词性,从而,可控地干预模型训练的过程。
步骤S130,以所述引导词为分割点,获取所述预设答案的第一语段和第二语段,所述第一语段包括所述预设答案中位于所述引导词以前的内容,所述第二语段包括所述预设答案中位于所述引导词以后的内容。
第一语段和第二语段在本申请中,分别作为部分训练语料,以获得第一问答模型和第二问答模型,示例地,如果预设答案“我和他来自中国北京”中,引导词为“来自”,第一语段中内容为“我和他”,第二语段中的内容为“中国北京”。
图6为本申请实施例提供的一种对话系统构建方法步骤S130的流程图,在一种可选择的实施方式中,如图6所示,步骤S130中可以包含以下步骤:
步骤S131,根据所述分词序列,将所述预设答案中位于所述引导词之前的所有分词逆序排列,生成所述第一语段。
在步骤S131中,首先,在预设答案的分词序列中定位到引导词所在的位置;然后,从引导词所在的位置,向前依次提取分词序列中的每个分词,不包括引导词,并以获取到的第一个分词作为第一语段的段首分词,其余分词按照提取的顺序依次在后排列;从而,使预设答案中位于引导词之前的所有分词能够逆序排列,得到分词逆序排列的第一语段。
示例地,如果预设答案的分词序列为:我/和/他/来自/中国/北京,其中,引导词为“来自”,则在步骤S131中,生成的第一语段为:他/和/我。
步骤S132,根据所述分词序列,将所述预设答案中位于所述引导词之后的所有分词正序排列,生成所述第二语段。
在步骤S132中,首先,在预设答案的分词序列中定位到引导词所在的位置;然后,从引导词所在的位置,向后依次提取分词序列中的每个分词,不包括引导词,并以获取到的第一个分词作为第二语段的段首分词,其余分词按照提取的顺序依次在后排列;从而,使预设答案中位于引导词之后的所有分词正序排列,得到分词正序排列的第二语段。
示例地,如果预设答案的分词序列为:我/和/他/来自/中国/北京,其中,引导词为“来自”,则在步骤S132中,生成的第二语段为:中国/北京。
本申请实施例中,与步骤S132中生成的分词正序排列的第二语段不同,步骤S133中的第一语段为分词逆序排列。由于当第一语段为分词逆序排列时,可根据引导词的位置定位第一语段的段首分词的位置,然后直接从段首分词的位置向前依次提取分词直到句首,因此,在提取过程中,不需要判断哪个分词为断尾分词。而如果第一语段的分词为正序排列,即从预设答案的句首向后提取分词,在提取时需要通过判断是否已经提取到了引导词来确定第一语段是否提取完毕,因此,逆序排列能够简化提取过程,提高提取效率。
步骤S140,将所述预设问题、所述第一语段和所述引导词作为训练语料,训练预设的第一原始模型,获得所述第一问答模型,并输出第一训练应答。
本申请中的第一原始模型可以是未经训练的sequence to sequence模型(缩写为:Seq2Seq模型),Seq2Seq模型是一种建模两个序列间关系的通用深度学习模型,如果以Seq2Seq模型作为问答模型,那么,这两个序列间关系就指的是question(问题)序列到answer(答案)序列的关系,当通过大规模的训练语料对Seq2Seq模型进行训练之后,Seq2Seq模型就会具备对用户提出的未知问题给出应答的能力。
本申请中,预设问题、第一语段和引导词作为训练第一原始模型的训练语料。其中预设问题作为问题语料,第一语段和引导词属于预设答案的一部分,作为应答语料。
图7为本申请实施例提供的一种对话系统构建方法步骤S140的流程图,在一种可选择的实施方式中,如图7所示,步骤S140可以包括以下步骤:
步骤S141,获取用于进行语料训练的第一原始模型。
第一原始模型可以为未经训练的sequence to sequence模型,包括:Encoder(编码端)和Decoder(解码端)。其中,作为问答模型使用时,Encoder(编码端)对应问题序列,在训练中用于接收问题语料;Decoder(解码端)对应答案序列,在训练中用于接收应答语料并输出训练中得到的应答内容。
步骤S142,将所述预设问题作为问题语料,输入至所述第一原始模型的编码端。
示例地,对话语料为:{你们是哪里人,我和他来自中国北京},则将“你们是哪里人”输入至第一原始模型的编码端。
步骤S143,将所述引导词逆序与所述第一语段的分词逆序组合后作为应答语料,输入至所述第一原始模型的解码端,训练获得所述第一问答模型,并获得解码端输出的所述第一训练应答。
示例地,预设答案的分词序列为:我/和/他/来自/中国/北京,其中,引导词为“来自”,第一语段为:他/和/我。引导词逆序为“自来”,与所述第一语段的分词逆序组合后得到的应答语料为:自来/他/和/我,然后,将“自来/他/和/我”输入至第一原始模型的解码端,同时,第一原始模型的解码端输出“自来/他/和/我”作为第一训练应答。
在步骤S141-S143中,以每个对话语料的预设问题作为问题语料,以预设答案的引导词与第一语段的分词逆序组合后作为应答语料,组成一对训练语料,输入至第一原始模型的编码端和解码端,完成一对训练语料对第一原始模型的训练。依照此训练方法,使用大量的训练语料对第一原始模型进行训练,即可获得第一应答模型。本申请在训练第一原始模型以获得第一问答模型的过程中,训练使用的应答语料中均包含引导词,由于引导词具有对语义的引导作用,因此,本申请中训练获得的第一应答模型对未知问题作出的第一应答与问题的语义关联度更高,使第一应答的语义受控。
步骤S150,将所述预设问题、所述第一训练应答和所述第二语段作为训练语料,训练预设的第二原始模型,获得所述第二问答模型。
第一原始模型可以是另一个未经训练的sequence to sequence模型。本申请中,预设问题、第一训练应答和第二语段作为训练第二原始模型的训练语料。其中预设问题作为问题语料,第一训练应答和预设答案的第二语段作为应答语料。
图8为本申请实施例提供的一种对话系统构建方法步骤S150的流程图,在一种可选择的实施方式中,如图8所示,步骤S150可以包括以下步骤:
步骤S151,获取用于进行语料训练的第二原始模型。
第二原始模型可以为另一个未经训练的sequence to sequence模型,包括:Encoder(编码端)和Decoder(解码端)。其中,作为问答模型使用时,Encoder(编码端)对应问题序列,在训练中用于接收问题语料;Decoder(解码端)对应答案序列,在训练中用于接收应答语料并输出训练中得到的应答内容。
步骤S152,将所述预设问题作为问题语料,输入至所述第二原始模型的编码端。
示例地,对话语料为:{你们是哪里人,我和他来自中国北京},则将“你们是哪里人”输入至第二原始模型的编码端。
步骤S153,将所述第一训练应答逆序与所述第二语段组合后作为训练语料,输入至所述第二原始模型的解码端,训练获得所述第二问答模型。
示例地,预设答案的分词序列为:我/和/他/来自/中国/北京,其中,引导词为“来自”,第二语段为:中国/北京,在步骤S143中得到的第一训练应答为:自来/他/和/我。第一训练应答逆序为:我/和/他/来自,与第二语段组合后作为:我/和/他/来自/中国/北京,然后,将“我/和/他/来自/中国/北京”输入至第二原始模型的解码端。
在步骤S151-S153中,以每个对话语料的预设问题作为问题语料,以第一原始模型训练时输出的第一训练应答的逆序与第二语段的组合作为应答语料,组成一对训练语料,输入至第二原始模型的编码端和解码端,完成一对训练语料对第二原始模型的训练。依照此训练方法,使用大量的训练语料对第二原始模型进行训练,即可获得第二应答模型,同时,第二原始模型的解码端输出“我/和/他/来自/中国/北京”作为第二训练应答,第二训练应答为预设问题的完整应答。本申请在训练第二原始模型以获得第二问答模型的过程中,训练使用的应答语料中包含第一训练应答,因此,使用该应答语料训练的第二问答模型对未知问题作出的第二应答与第一问答模型对未知问题作出的第一应答存在语义关联。
本申请中,在训练获得第一问答模型的过程中,使用引导词提高第一问答模型生成的第一应答与问题的语义关联度,使应答的语义受控;并且,在训练获得第二问答模型的过程中,进一步使用第一训练应答作为训练语料的一部分,引导训练第二原始模型以获得第二问答模型的过程,从而使第二问答模型对未知问题作出的第二应答受到第一应答的引导,使第二应答的语义受控,与问题更相关。
此外,在一种可选择的实施方式中,在执行步骤S140和步骤S150中对第一原始模型和第二原始模型进行训练时,可根据最大化互信息原则,对第一原始模型和第二原始模型进行最大化互信息优化,使训练得到的第一问答模型和第二问答模型生成的应答与问题的语义关联度更高。
互信息是指两个变量之间的相互依赖程度,对于本申请中的第一原始模型(训练后即为第一问答模型)和第二原原始模型(训练后即为第二问答模型)来说,编码端的输入和解码端的输出即为相互依赖的两个变量。
示例地,本申请实施例中的第一原始模型和第二原始模型可以为Seq2Seq模型,在Seq2Seq模型中,为了使应答与问题在语义上更相关,本申请根据最大化互信息原则,建立问题序列和答案序列之间的双向最大化互信息优化,包括:优化从问题序列生成最相关答案序列的概率,以及,优化从答案序列关联最相关问题序列的概率。优化的目标函数为:
其中λ为相关系数,P(A|Q)表示从问题序列生成最相关答案序列的概率,P(Q|A)表示从答案序列关联最相关问题序列的概率。
在一种可选择的实施方式中,本申请实施例中使用的Seq2Seq模型可以使用GRU算法和Attention机制,以提高模型的质量。其中,GRU(Gated recurrent unit:门循环单元)是属于机器学习领域中递归神经网络(RNN)的一种隐藏层信息计算方法,GRU通过引入门(Gate)的机制来解决递归神经网络的梯度消失问题,从而学习到长距离依赖;Attention(注意力)机制打破了传统递归神经网络的编码器-解码器结构在编解码时都依赖于内部一个固定长度向量的限制,Attention机制根据编码器对输入序列的中间输出结果,对输入序列进行选择性的学习,并且在模型输出时将输出序列与输入序列进行关联,从而提高模型质量。
由以上技术方案可知,本申请实施例提供了一种对话系统构建方法,首先,从预设答案中获取引导词,然后,以引导词为分割点,获取预设答案的第一语段和第二语段,然后,将预设问题、第一语段和引导词作为训练语料,训练预设的第一原始模型,获得第一问答模型,并输出第一训练应答;最后,将预设问题、第一训练应答和第二语段作为训练语料,训练预设的第二原始模型,获得第二问答模型。本申请实施例提供的技术方案,在训练获得第一问答模型的过程中,使用引导词提高第一问答模型生成的第一应答与问题的语义关联度,使应答的语义受控;并且,在训练获得第二问答模型的过程中,进一步使用第一训练应答作为训练语料的一部分,引导训练获得第二问答模型的过程,从而使第二问答模型对未知问题作出的第二应答受到第一应答的引导,使第二应答的语义受控,此外,根据最大化互信息原则,对第一问答模型和第二问答模型进行语义关联度优化,能够使应答与问题更相关。因此,使用本申请实施例的对话系统构建方法构建的对话系统,能够根据用户的对话内容控制应答的语义,使应答内容与问题的关联度更高。
实施例二
本申请实施例提供了一种语义受控应答方法,应用于本申请提供的一种对话系统构建方法构建的对话系统,图9为本申请实施例提供的一种语义受控应答方法的流程图,如图9所示,所述方法包括:
步骤S210,当用户输入问题时,从所述问题中获取引导词,所述引导词与所述问题语义关联。
本申请中,引导词可以为动词或名词。其中,动词在一个完整的语句中常作为谓语使用,能够表达语句中主语的动作或意图,对语句的语义有引导作用,因此,动词是与语句语义存在关联的语句成分;此外,名词在语句中常表达某一概念,而对话的内容常通过这个概念展开。基于引导词在语句中对语义的上述作用,在步骤S210中,从问题中获取引导词,使对话系统中的第一问答模型和第二问答模型在引导词的引导下生成应答,有利于提高应答与问题的语义关联。
图10为本申请实施例提供的一种语义受控应答方法步骤S210的流程图,在一种可选择的实施方式中,如图10所示,步骤S210可以包括以下步骤:
步骤S211,获取所述问题的分词序列,所述分词序列包含所述问题的全部分词。
本申请中,可以使用中文分词(也称:中文切词)技术,对预设答案进行分词。中文分词(Word Segmentation,WS)指的是将汉字序列切分成词序列。因为在汉语中,词是承载语义的最基本的单元。分词是信息检索、文本分类、情感分析等多项中文自然语言处理任务的基础。在中文分词中,可以使用基于字符串匹配的分词方法,首先,设置一个分词库词典,然后,将待分词的预设答案与分词库词典中已有的分词进行匹配,并根据匹配结果对预设答案进行分词。此外,除了使用中文分词技术进行分词以外,还可以使用依存句法分析、基于词频统计分词等其他分词方法进行分词,本申请对通过使用何种方法获取问题的分词序列不做具体限定,在本申请的技术构思下,本领域技术人员可对分词方法自行选择。
示例地,本申请中问题的分词序列可以为以下形式:
question={q1,……,qi,……,qn}其中i、n为整数,且1≤i≤n,
上述形式的分词序列中,qi为问题分词序列中的第i个分词。示例地,用户输入的问题为:“今天天气怎么样”,该问题的分词序列为:
question={今天,天气,怎么样}
步骤S212,获取所述分词序列中每个分词的至少一个相关词。
本申请中,分词的相关词,是指与分词具有相同或相近含义的字词,相同含义是指分词和相关词在语句中可相互替换而不影响句义,例如“今天”和“今日”,相近含义是指分词和相关词在词义上限定或表达一类概念,例如“昨天”“今天”“明天”等。
本申请中,可使用Word2vec模型来获取每个分词的相关词,Word2vec模型是一种机器学习模型,word2vec模型可用来映射词袋中每个词到一个向量,可用来表示词对词之间的关系,因此可通过Word2vec模型找出与分词关系相近的相关词。
示例地,本申请对分词序列“question={今天,天气,怎么样}”中的每个分词获取至少一个相关词,一种示例性的结果为:
分词 |
相关词 |
今天 |
今儿 明天 今日 昨天 每天 |
天气 |
温度 闷热 下雨 凉爽 寒冷 |
怎么样 |
如何 好吗 可以吗 |
步骤S213,根据预设抽词规则,从所有所述相关词中抽取至少一个所述相关词,作为候选引导词,生成候选词集。
本申请中,预设抽词规则可以为:获取每个相关词的词性,抽取词性为动词或名词的相关词作为候选引导词。
本申请可基于中文语言中的常用表,如《现代汉语常用词表》等,构建动词库和名词库,对每个相关词与动词库或名词库中的词进行比对,从而可以获取到每个相关词的词性,并进一步将相关词中的动词和名词选作候选引导词,生成候选词集,候选词集的形式可以为:
{a1,……,aj,……,am}其中j、m为整数,且1≤j≤m
示例地,根据步骤S212中示例的相关词,生成的候选词集为:
{今儿,明天,今日,昨天,每天,温度,下雨}
步骤S214,根据预设选词规则,从所述候选词集中获取引导词。
在候选词集中,候选引导词为动词或名词,如前文所述,动词和名词对语句的语义有引导作用,因此,任意一个候选引导词均可被选作引导词。
但是,为了进一步提高本申请的语义受控应答方法中应答与问题的语义关联性,可对候选词集中的候选引导词进行二次选择,从中选出一个与问题语义关联度最高的引导词。因此,参见图11,为本申请实施例提供的一种语义受控应答方法步骤S214的流程图,在一种可选择的实施方式中,步骤S214可以包括以下步骤:
步骤S2141,对每个所述候选引导词分别与所述分词序列中的每个分词进行相似度计算。
本申请在进行相似度计算时,可以对每个候选引导词和问题的每个分词构造特征向量,并分别计算每个候选引导词特征向量与问题的每个分词特征向量之间的余弦值,得到的余弦值即为候选引导词与问题分词的相似度,即对于候选引导词aj和问题分词qi,有:
sim(aj,qi)=cos(Taj,Tqi)
其中,sim(aj,qi)表示候选引导词aj与问题分词qi的相似度,Taj表示引导词aj的特征向量,Tqi表示问题分词qi的特征向量。
步骤S2142,根据相似度计算结果,获取每个所述候选引导词的重要度,所述重要度为所述候选引导词与所述分词序列中所有分词的相似度之和。
对于候选引导词aj,其重要度为:
其中,I(aj)表示候选引导词aj重要度,sim(aj,qi)表示候选引导词aj与问题分词qi的相似度。
可见本申请中,每个候选引导词的重要度是这个候选引导词与问题所有分词的相似度的总和,因此重要度反映出了每个候选引导词与问题整体的语义关联情况,可作为选取引导词的参考因素。
步骤S2143,将所述重要度最大的所述候选引导词作为引导词。
在步骤S2143中,为了使引导词与问题的语义关联最大,将重要度最大的候选引导词作为引导词。使用与问题的语义关联最大的引导词,引导对话系统中的第一问答模型和第二问答模型对问题生成应答,能够使应答与问题的语义关联最大;此外,在不同的问题中,重要度最大的候选引导词会不同,因此,不同问题中的引导词也会不同,导致对话系统对不同问题生成的应答也会发生变化,从而,提高了对问题应答的多样性。
步骤S220,根据所述引导词,使用第一问答模型对所述问题生成第一应答,所述第一应答与所述引导词语义关联。
在步骤S220中,将问题和引导词输入至第一问答模型,引导词能够控制第一问答模型的输出,使第一问答模型根据训练获得的应答方式,生成带有引导词且语义受控的第一应答,第一应答包含了对话系统对问题的部分应答内容。
示例地,引导词为“温度”,问题为“今天天气怎么样”,则第一问答模型在一次输出中可能给出的第一应答为“天气晴朗温度”。
步骤S230,根据所述引导词和所述第一应答,使用第二问答模型对所述问题生成第二应答,所述第二应答与所述引导词和所述第一应答语义关联。
在步骤S230中,将问题、引导词和第一应答输入至第二问答模型,引导词和第一应答能够控制第二问答模型的输出,使第二问答模型根据训练获得的应答方式,生成带有引导词且语义受控的第二应答,第二应答包含了对话系统对问题的全部应答。
示例地,引导词为“温度”,第一应答为“天气晴朗温度”,问题为“今天天气怎么样”,则第二问答模型在一次输出中给出的第二应答为“天气晴朗温度适宜”。
由以上技术方案可知,本申请实施例提供了一种语义受控应答方法,当用户输入问题时,首先,从问题中获取与问题语义关联的引导词;然后,使用对话系统中第一问答模型对问题生产第一应答,第一应答包含了对话系统对问题的部分应答内容,其中,在第一问答模型生成第一应答的过程中,引导词能够控制第一问答模型的输出,使第一应答模型生成第一应答带有引导词且语义受控;然后,使用对话系统中的第二问答模型对问题生成第二应答,第二应答包含了对话系统对问题的全部应答,其中,在第二问答模型生成第二应答的过程中,引导词和第一应答能够控制第二问答模型的输出,使第二应答模型生成第二应答带有引导词且语义受控;从而,使本申请实施例提供的一种语义受控应答方法,对未知问题生成的应答与问题的语义关联度高,此外,随着引导词的变化,对未知问题生成的应答也会发生变化,从而提高了对问题应答的多样性。