本发明涉及自然语言处理技术,尤其涉及一种中文相似问题生成系统与方法。
背景技术:
自然语言处理(naturallanguageprocessing)是研究人与计算机交互的语言问题的一门学科。处理自然语言的关键是要让计算机“理解”自然语言,自然语言处理的关键技术包括自然语句的分词、词性标注、命名实体识别、指代消解、句法依存分析等。
问答技术(questionanswering),是信息检索技术的一种高级形式,它能用准确、简洁的自然语言回答用户的自然语言问题。自动问答系统能够自动分析问题并给出相应的候选答案,传统的自动问答系统主要由问题分析、信息检索和答案生成等模块构成。
传统的自动问答主要是面向文本集合进行的,包括分析问题中的关键词,将关键词提交到搜索引擎,从文本库中检索相关文档,获取返回结果中确信度最高的前若干文档,再从中生成答案。但是随着语义网技术的发展与逐渐普及,知识图谱(knowledgegraph)、链接数据(linkeddata)等信息组织程度较高的结构化知识库兴起,例如dbpedia和freebase,使得新式基于结构化知识库实现自动问答成为可能。在这种知识库的基础上进行自动问答,比传统基于文本的自动问答更为高效、准确。如果用户能够使用查询对知识库进行提问,无疑能够精准快速地获得答案。但是在实际运用自动问答技术时,大部分用户并不能够实现这种“专业”的提问方式,而往往只会使用人类自然语言的形式进行提问,因此基于自然语言问句的知识库问答具有重要价值。在基于知识库的自动问答过程中,用户输入中文自然语言问句后,传统方法对问句仅采取简单处理得到关键词,生成的查询结构化程度不高,不能实现对知识库数据准确高效的查询。
技术实现要素:
本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种中文相似问题生成系统与方法。
本发明解决其技术问题所采用的技术方案是:一种中文相似问题生成系统,包括:
预处理模块,用于接收给定的问句,并进行预处理,所述预处理包括:分词、去停用词、对得到的分词进行词性标注、给定问句进行句法依存关系分析;
命名实体识别模块,用于对给定的问句进行识别,得到识别命名实体;
问题分类模块,用于对给定的问句按照语义进行分类,所述分类类别依据伊利诺伊大学厄巴纳-香槟分校(universityofillinoisaturbana-champaign,uiuc)提出的分类体系架构,主要分为七大类,其中包括:描述、人物、地点、时间、数字、实体、未知;
相似语义问题生成模块,用于针对给定的问句,生成语义相似的问题;
所述相似语义问题生成模块包括基于规则的相似语义问题生成子模块和基于机器学习的相似语义问题生成子模块;
所述基于规则的相似语义问题生成子模块,用于根据词性标注的分词并以命名实体识别模块的识别结果和问题分类模块的分类结果为辅助进行语义词扩展,然后对替扩展后的语义词进行重新组合,生成候选问题;
所述基于机器学习的相似语义问题生成子模块,用于利用机器学习方法对问题建模,利用训练数据构建模型进行问题生成。
按上述方案,所述命名实体识别模块得到多个初步识别命名实体;将所述多个初步识别命名实体组成查询词条在属性数据库中进行搜索,得到多个候选完整命名实体;分别计算所述多个候选完整命名实体与所述用户输入语料的相似度;选择所述相似度最高的所述候选完整命名实体作为最终识别命名实体,输出所述最终识别命名实体。
按上述方案,所述相似语义问题生成模块还用于对生成的语义相似的问句进行筛选排序,根据需要保留排名前列的问题。
按上述方案,所述相似语义问题生成模块对基于规则的相似语义问题生成子模块生成的问题排序的依据如下:
对基于规则的相似语义问题生成子模块生成的问题,采用概率模型以评估句子通顺程度(或称为合理性),具体如下:
对生成句子中每个替换词计算其前后项生成概率(考虑2-gram语言模型),假设原句子为sold,新生成句子为tnew,则计算公式如下:
p(sold→tnew)=p(s0s1…si…sn→t0t1…ti…tn)=p(t0)p(t0|s0)p(t1|s1)p(t1|t0)…p(ti-1|si-1)p(ti-1|ti)p(ti+1|ti)p(ti|si)…p(tn|tn-1)
其中,n表示句子长度;p(ti|si)表示新句tnew中第i个词项由原句sold中第i个词项生成的概率;p(ti+1|ti)表示新句tnew中第i+1个词项由第i个词项生成概率,考虑到sold→tnew变换过程中只有替换进行同义词替换位置发生词项改变,因此其余位置p(ti|si)=1,因此上式可简化为如下形式:
p(sold→tnew)=πmp(ti|si)p(ti|ti-1)p(ti+1|ti)
其中,m为sold中被替换的同义词位置个数,为避免连乘引发的精度缺失,考虑对等式两遍取log,为方便表示,令l(sold→tnew)≡logp(sold→tnew),则上式可转化为:
l(sold→tnew)=∑m[logp(ti|si)+logp(ti+1|ti)+logp(ti|ti-1)]
其中,p(ti|si)由同义词表给出其概率值,p(ti|ti-1)计算公式如下:
其中,n(ti,ti-1)表示词项ti,ti-1在语料库(为先验语料库)中共现次数;n(ti-1)表示词项ti-1在语料库中出现个数;c为平滑因子,通常c为|v|,即词表大小。
因此,基于上述公式可以对基于规则生成所有新句子计算其通顺程度,从而能够对所有生成句子进行排序以选出最为合理的前n个语句。
按上述方案,所述基于机器学习的相似语义问题生成子模块,用于利用机器学习方法对问题建模,利用训练数据构建模型进行问题生成的过程如下:
1)获得中文问句作为训练集;
2)采用基于attention机制的sequencetosequence模型对训练集中的中文问句进行转换,转换结果为中文问句;具体如下:
2.1)设转换后的中文问句为x,其分词为xm;输出的中文问句为y,其分词为yn;
2.2)采用循环神经网络计算中文问句x中各分词xm的函数值f(xm);
2.3)计算参数ci
ci=αi1f(x1)+αi2f(x2)+αi3f(x3)+…+αinf(xn),n=1,2,3,…,n;
n为中文问句x的分词个数;αin为语料库中事先设定的注意力模型权值;参数ci的个数与中文问句y的分词个数相同;
2.4)计算分词yn;
y1=g(c1);
yn=g(cn,y1,y2,…,yn-1);
分词yn的个数是预设的;
2.5)将分词yn顺序组合,获得输出中文问句;
3)利用测试数据集测试训练模型效果,以保证其生成中文问句效果能够达到指定测试标准;否则调整神经单元参数,重新训练模型直至性能能够达标。
按上述方案,所述相似语义问题生成模块对基于机器学习的相似语义问题生成子模块生成的问题排序的依据如下:
计算接收给定的问题与生成的问题的相似度,如果相似度小于0.85则舍弃该生成的问题,然后对剩下的符合相似度要求的问题按相似度进行排序。
按上述方案,所述步骤2.2)中循环神经网络采用的神经单元为lstm(longshort-termmemory)或gru(gatedrecurrentunit),通常该模型用于机器翻译相关应用,这里我们主要用来进行相似问句生成。
本发明还提供一种中文相似问题生成方法,其特征在于,包括以下步骤:
1)接收给定的问题,并进行预处理,所述预处理包括:分词、去停用词、对得到的分词进行词性标注、给定问句进行句法依存关系分析;
2)对给定的问题进行识别,得到识别命名实体;
3)对给定的问题按照语义进行分类,所述分类类别包括七大类:描述、人物、地点、时间、数字、实体、未知;
4)针对给定的问题,生成语义相似的问题;
生成相似语义问题包括以下方法:基于规则的相似语义问题生成方法和基于机器学习的相似语义问题生成方法;
所述基于规则的相似语义问题生成方法是根据词性标注的分词和命名实体进行同义词扩展(同义词或近义词替换),然后对扩展后的替换词进行重新组合,生成候选问题;
所述基于机器学习的相似语义问题生成方法是利用机器学习方法对问题建模,利用训练数据构建模型进行问题生成。
按上述方案,所述步骤4)中基于机器学习的相似语义问题生成是利用机器学习方法对问题建模,利用训练数据构建模型进行问题生成,过程如下:
4.1)获得中文问句作为训练集;
4.2)采用基于attention机制的sequencetosequence模型对训练集中的中文问句进行转换,转换结果为中文问句;具体如下:
4.2.1)设转换后的中文问句为x,其分词为xm;输出的中文问句为y,其分词为yn;
4.2.2)采用循环神经网络计算中文问句x中各分词xm的函数值f(xm);
4.2.3)计算参数ci
ci=αi1f(x1)+αi2f(x2)+αi3f(x3)+…+αinf(xn),n=1,2,3,…,n;
n为中文问句x的分词个数;αin为语料库中事先设定的注意力模型权值;参数ci的个数与中文问句y的分词个数相同;
4.2.4)计算分词yn;
y1=g(c1);
yn=g(cn,y1,y2,…,yn-1);
分词yn的个数是预设的;
4.2.5)将分词yn顺序组合,获得输出中文问句;
4.3)利用测试数据集测试训练模型效果,以保证其生成中文问句效果能够达到设定测试标准;否则调整神经单元参数,重新训练模型直至性能能够达标。
本发明产生的有益效果是:使用本发明方法,能有效的提高生成的问题问句与原始问题的匹配程度和合理性。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明实施例的结构示意图;
图2是本发明实施例的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1和图2所示,一种中文相似问题生成系统,包括:
预处理模块,用于接收给定的问题,并进行预处理,所述预处理包括:分词、去停用词、对得到的分词进行词性标注、给定问句进行句法依存关系分析;(其中,给定问句进行句法依存关系分析用于对句子结构分析(主谓宾等),以便在模板生成判断当前词是否可进行同义词替换,以便相似问句生成时能够保留相应专有名词,如特定地名、人名、机构名等,以免在生成过程中引起句义改变)
给定的问题为1、上海哪里最热闹,
处理的结果为:<上海><哪里><最><热闹>。
命名实体识别模块,用于对给定的问句进行识别,得到识别命名实体;
比如,上海我们识别为地名,这样在后期替换中,我们不替换这个分词。
问题分类模块,用于对给定的问句按照语义进行分类,所述分类类别按照uiuc标准包括七大类:描述、人物、地点、时间、数字、实体、未知;
相似语义问题生成模块,用于针对给定的问句,生成语义相似的问题;
所述相似语义问题生成模块包括基于规则的相似语义问题生成子模块和基于机器学习的相似语义问题生成子模块;
所述基于规则的相似语义问题生成子模块,用于根据词性标注的分词进行语义词扩展(同义词或近义词替换),然后对替扩展后的语义词进行重新组合,生成候选问题;
a、上海哪里最繁华?
b、上海哪里顶繁华?
所述基于机器学习的相似语义问题生成子模块,用于利用机器学习方法对问题建模,利用训练数据构建模型进行问题生成。
基于机器学习的相似语义问题生成子模块,用于利用机器学习方法对问题建模,利用训练数据构建模型进行问题生成的过程如下:
1)获得中文问句作为训练集;
2)采用基于attention机制的sequencetosequence模型对训练集中的中文问句进行转换,转换结果为中文问句;具体如下:
2.1)设转换后的中文问句为x,其分词为xm;输出的中文问句为y,其分词为yn;
2.2)采用循环神经网络计算中文问句x中各分词xm的函数值f(xm);
步骤2.2)中循环神经网络采用的神经单元为lstm(longshort-termmemory)或gru(gatedrecurrentunit),通常该模型用于机器翻译相关应用,这里我们主要用来进行相似问句生成。
2.3)计算参数ci
ci=αi1f(x1)+αi2f(x2)+αi3f(x3)+…+αinf(xn),n=1,2,3,…,n;
n为中文问句x的分词个数;αin为语料库中事先设定的注意力模型权值;参数ci的个数与中文问句y的分词个数相同;
2.4)计算分词yn;
y1=g(c1);
yn=g(cn,y1,y2,…,yn-1);
分词yn的个数是预设的;
2.5)将分词yn顺序组合,获得输出中文问句;
3)利用测试数据集测试训练模型效果,以保证其生成中文问句效果能够达到指定测试标准;否则调整神经单元参数,重新训练模型直至性能能够达标。
本实施例中,生成的问题为:c、上海最著名的食物在哪里?
对生成的结果,对基于规则的相似语义问题生成子模块生成的问题,采用模型评估问题的合理性,具体如下:
对基于规则的相似语义问题生成子模块生成的问题,采用概率模型以评估句子通顺程度(或称为合理性),具体如下:
对生成句子中每个替换词计算其前后项生成概率(考虑2-gram语言模型),假设原句子为sold,新生成句子为tnew,则计算公式如下:
p(sold→tnew)=p(s0s1…si…sn→t0t1…ti…tn)=p(t0)p(t0|s0)p(t1|s1)p(t1|t0)…p(ti-1|si-1)p(ti-1|ti)p(ti+1|ti)p(ti|si)…p(tn|tn-1)
其中,n表示句子长度;p(ti|si)表示新句tnew中第i个词项由原句sold中第i个词项生成的概率;p(ti+1|ti)表示新句tnew中第i+1个词项由第i个词项生成概率,考虑到sold→tnew变换过程中只有替换进行同义词替换位置发生词项改变,因此其余位置p(ti|si)=1,因此上式可简化为如下形式:
p(sold→tnew)=пmp(ti|si)p(ti|ti-1)p(ti+1|ti)
其中,m为sold中被替换的同义词位置个数,为避免连乘引发的精度缺失,考虑对等式两遍取log,为方便表示,令l(sold→tnew)≡logp(sold→tnew),则上式可转化为:
l(sold→tnew)=∑m[logp(ti|si)+logp(ti+1|ti)+logp(ti|ti-1)]
其中,p(ti|si)由同义词表给出其概率值,p(ti|ti-1)计算公式如下:
其中,n(ti,ti-1)表示词项ti,ti-1在语料库(为先验语料库)中共现次数;n(ti-1)表示词项ti-1在语料库中出现个数;c为平滑因子,通常c为|v|,即词表大小。
因此,基于上述公式可以对基于规则生成所有新句子计算其通顺程度,从而能够对所有生成句子进行排序以选出最为合理的前n个语句。
相似语义问题生成模块对基于机器学习的相似语义问题生成子模块生成的问题排序的依据如下:
计算接收给定的问题与生成的问题的相似度,如果相似度小于0.85则舍弃该生成的问题,然后对剩下的符合相似度要求的问题按相似度进行排序。
如果我们最后选择3个相似结果,可以在对基于规则的相似语义问题生成子模块生成的问题中选择前2个,然后在基于机器学习的相似语义问题生成子模块生成的问题中选择第一个,作为结果组合。
类似的,根据上述系统,本发明还提供一种对应的中文相似问题生成方法,包括以下步骤:
1)接收给定的问题,并进行预处理,所述预处理包括:分词、去停用词、对得到的分词进行词性标注、给定问句进行句法依存关系分析;
2)对给定的问题进行识别,得到识别命名实体;
3)对给定的问题按照语义进行分类,所述分类类别包括七大类:描述、人物、地点、时间、数字、实体、未知;
4)针对给定的问题,生成语义相似的问题;
生成相似语义问题包括以下方法:基于规则的相似语义问题生成方法和基于机器学习的相似语义问题生成方法;
所述基于规则的相似语义问题生成方法是根据词性标注的分词和命名实体进行同义词替换扩展(同义词或近义词替换),然后对扩展后的替换词进行重新组合,生成候选问题;
所述基于机器学习的相似语义问题生成方法是利用机器学习方法对问题建模,利用训练数据构建模型进行问题生成。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。