首页> 中国专利> 一种基于概念的智能中文问答系统

一种基于概念的智能中文问答系统

摘要

本发明公开了一种基于概念的中文问答系统,该系统主要包括数据服务器、问题预处理模块、候选问题集提取模块、问句相似度计算模块。本发明的目的在于提供基于概念的问答系统,该系统能对用户输入的问句处理后的关键词串进行同义扩展,更好的理解问句,进行检索,提高了问答系统的查全率。并且,系统从词形,词序,及词长三方面给出了一种基于概念的中文句子相似度计算方法,提高了检索的查准率。同时,系统采用高效检索技术快速提取候选问题集,计算问句相似度,并对问题集快速排序,将排好序的问题及答案返回给用户。本问答系统从概念上对用户输入的问句进行更精准地理解,检索准确答案。通过实验,表明本系统具有高查全率和查准率。

著录项

  • 公开/公告号CN101286161A

    专利类型发明专利

  • 公开/公告日2008-10-15

    原文格式PDF

  • 申请/专利权人 华中科技大学;

    申请/专利号CN200810047855.4

  • 申请日2008-05-28

  • 分类号G06F17/30(20060101);

  • 代理机构42201 华中科技大学专利中心;

  • 代理人曹葆青

  • 地址 430074 湖北省武汉市洪山区珞喻路1037号

  • 入库时间 2023-12-17 20:53:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-07-22

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20101006 终止日期:20140528 申请日:20080528

    专利权的终止

  • 2010-10-06

    授权

    授权

  • 2008-12-10

    实质审查的生效

    实质审查的生效

  • 2008-10-15

    公开

    公开

说明书

技术领域

本发明属于信息检索技术,具体为一种基于概念的问答检索系统。该问答系统,是对信息检索系统的改进,是信息检索一种高级形式。它能用准确、简洁的语言回答用户用自然语言提出的问题。

背景技术

21世纪,人们已经正式步入了信息时代,对网络信息量的需求与日俱增。但网络固有的大容量、异构性、分布性和动态性,以及Web中大量缺乏组织的无效数据,降低了人们对丰富信息资源的利用效率,出现“信息过载”现象。最近几年,随着网络和信息技术的快速发展,同时人们想更快地获取信息的愿望促进了自动问答技术的发展。有越来越多的公司和科研院所参与自动问答技术的研究。比较著名的如Microsoft、IBM、MIT、University of Zurich等。美国著名的文本检索会议TREC于1999年设立了QA Track,为问答系统提供评测的平台。目前,国外已经开发出一些相对成熟的问答系统。国内也有一些高校和研究机构对自动问答系统进行研究,中科院计算所、哈尔滨工业大学、复旦大学、北京理工大学、香港科技大学等。但是整体来说,参与中文自动问答技术研究的科研机构比较少,而且基本没有成型的中文自然语言问答系统。

问答系统(Question Answering System)是指能够对计算机用户输入的使用自然语言描述的问句做出回答的计算机程序。问答系统集自然语言处理、信息检索、知识表示为一体,正日益成为国际上研究的热点。它既能够让用户用自然语言提问,又能够为用户返回一个简洁、准确的答案,而不是一些相关的网页。因此,问答系统和传统的依靠关键字匹配的搜索引擎相比,能够更好地满足用户的检索需求,更准确地找出用户所需要的答案,具有方便、快捷、高效等特点。

自然语言问答系统的人机界面、精确性和实时性是汉语自然语言问答系统的三大研发目标。其中,精确性是自然语言问答系统的首要目标。为了达到这一目标,在用户问句处理方面,需要对用户输入的问句进行正确的分词和词性标注、同义词扩充、名实体标注、句法分析、答案类型标注等等处理,对于基于常问问题库的问答系统,用户输入问句与问题库问句之间的相似度计算是系统的核心所在,其计算方法的精确性和高效性关系到整个系统的精确性和效率。

发明内容

本发明的目的在于提供一种基于概念的智能中文问答系统,该系统具有更高的查全率和查准率。

本发明提供的基于概念的智能中文问答系统,其结构为包括数据服务器、输入模块、显示模块,其特征在于:它还包括问题预处理模块、候选问题集提取模块、问句相似度计算模块;

数据服务器用于存储语料库、索引库,XML文档和问题库;

输入模块用于接收用户输入的问题,检查输入问句的规范性,将正确格式的问句提交到问题预处理模块;

问题预处理模块用于接收输入模块传递的问句,调用数据服务器中的知识库和规则库对其进行预处理,并将处理后的结果分别传递给候选问题集模块和问句相似度计算模块;

候选问题集提取模块用于从问题预处理模块提供的预处理结果中快速提取候选问题集,为问句相似度计算模块提供计算对象;

问句相似度计算模块用于求解检索问句与候选问题集中问句的相似度,中文句子相似度计算通过对检索问句的关键词串进行同义扩展,利用扩展结果,调用词形相似度计算方法,再调用词序相似度计算方法和词长相似度计算方法,分别计算词形相似度、词序相似度、词长相似度;然后,将三项加权,计算问句最终的相似度;

显示模块根据问句相似度计算模块的处理结果,将对应于问题库中的问题答案及相关信息,返回给提交检索问句的用户。

本发明系统能从概念层次上理解用户输入的中文问句,对问句中的关键词进行同义扩展,来支持自然语言描述的问句的检索,提高了问答系统的查全率。并且,系统综合考虑问句的词形,词序,及词长三方面,提高了问句检索的查准率。其次,系统采用高效检索技术从问题库中快速提取出候选问题集,计算问题集与用户输入的问句之间相似度,并基于相似度对问题集快速排序,将排好序的问题及其答案返回给用户。通过以上创新方法,保证了能够快速地返回一个简洁、准确的答案。本发明系统针对精确性和实时性的要求,分别以查准率、检索效率、查全率等方面为主要指标,进行开发,实现。实验结果表明,达到了预期的效果。具体分析,本发明具有如下优点:

(1)查准率高:该系统依据自然语言处理技术,从概念层次对检索问句中的关键词进行处理,利用了同义词在句子中表达同一概念的性质,对检索问句的关键词串进行同义扩展,计算词形相似度,再结合词序,词长相似度,综合计算问句相似度计算,实现了对原检索问句与预选问题库问题的高度准确匹配。最终,快速地检索出理想的精准结果,达到用户的检索要求。

(2)检索效率高:本系统采用了高效的信息检索技术。实现快速提取候选问题集。具有较高的执行效率。本系统利用快速的检索技术,将检索问句的关键词串作为索引词,建立容量较小的索引库;索引的构建采用倒排表结构,大大提供了检索效率。因此,检索模块能快速地提取预选问题集。提高了系统的效率。

(3)查全率高:系统能从概念层次上理解用户输入的中文问句,对问句中的关键词进行同义扩展,扩大了用户提交的检索问句的语义信息。来支持自然语言描述的问句的检索,使候选问题集更为准确。提高了选问题集的查全率。进而提高了问答系统的查全率。保证用户得到正确的结果。

附图说明

图1是本发明基于概念的智能中文问答系统的体系结构图。

图2是本发明基于概念的中文问答系统的模块结构示意图。

图3是问题预处理模块的流程图。

图4是检索模块的流程图。

图5是候选问题集模块的流程图。

图6是句子相似度计算的流程图。

图7是显示模块的流程图。

具体实施方式

下面结合附图和实例对本发明作进一步详细的说明。

如图1所示,本发明提供的基于概念的智能中文问答系统包括数据服务器100、输入模块200、问题预处理模块300、候选问题集提取模块400、问句相似度计算模块500和显示模块600。

数据服务器100用于存储语料库、索引库,XML文档和问题库,为问题预处理模块300提供知识和规则支持,为候选问题集提取模块400提供索引和检索对象。

输入模块200用于接收用户输入的问题,检查输入问句的规范性,保证能将正确格式的问句提交到问题预处理模块300。

问题预处理模块300用于接收输入模块200传递的问句,调用数据服务器100中的知识库和规则库对其进行预处理,包括中文分词,词性标注,关键词抽取等操作,并将处理后的结果分别传递给候选问题集模块400和问句相似度计算模块500。

候选问题集提取模块包括索引模块、检索模块和候选问题集模块。用于快速提取候选问题集(与检索问句相关的问句集),为问句相似度计算模块提供计算对象。

问句相似度计算模块500利用设计的基于概念的中文句子相似度计算算法,求解检索问句与候选问题集中问句的相似度,中文句子相似度计算通过对检索问句的关键词串进行同义扩展,利用扩展结果,调用词形相似度计算方法,再调用词序相似度计算方法和词长相似度计算方法,分别计算词形相似度、词序相似度、词长相似度。然后,将三项加权,计算问句最终的相似度。

显示模块600,根据问句相似度计算模块500的处理结果,将对应于问题库中的问题答案及相关信息,返回给提交检索问句的用户。

下面分别举例对数据服务器100、问题预处理模块300、预选问题集模块400和句子相似度计算模块500作进一步详细的说明。

如图2(基于概念的中文问答系统的模块结构示意图)所示:

数据服务器100用于存储语料库包括知识库110和规则库120,及索引库130,XML文档140和问题库150。为问题预处理模块300提供知识和规则支持,同时,为索引模块410提供索引源,为候选问题集模块430提供检索对象。

语料库中存放的是以电子计算机为载体承载语言知识的基础资源。在语言的实际使用中真实出现过的语言材料经过加工(分析和处理)而得到的。

其中,知识库是概念同义扩展知识库,字典、词典知识库。规则库有词性规则库,句子成分规则库。

问题预处理模块300用于接收输入模块200传递的问句,调用知识库110、规则库120对其进行预处理,包括问句的中文分词,词性标注,关键词抽取等操作,并将处理后的结果分别传递给候选问题集模块400和问句相似度计算模块500。

如图3所示,问题预处理模块300先对用户的检索问题进行词法分析,包括问句的中文分词模块310和词性标注模块320。依据词性在句子中的重要程度规则(通常名词,动词,代词,形容词对句子最重要)及利用停用词表过滤停用词进行关键词抽取模块330。对抽取出的关键词再通过概念扩展知识库110(依据共享版《同义词词林》生成)进行扩展。利用预处理模块300,得到一组符合要求的中间处理结果;

问题预处理模块300处理流程为:(1)、输入问句;(2)、对问句进行格式检验:如果为格式不正确,返回(1);(3)、对问句进行处理,中文分词、词性标注;(4)、调用停用词表,利用句子成分重要程度规则,进行关键词抽取分析处理;(5)问句关键词抽取;(6)、输出关键词串。

中文分词模块310,该模块的分词采用最大逆向匹配方法。由词典知识库作为语料支撑。假设词典中的最长词条所含汉字个数为i,则取被处理文本当前字符串序列中的前i个字作为匹配字段,查找词典,若词典中有这样一个i字词,则匹配成功,匹配字段作为一个词被切分出来;如果词典中找不到这样的一个i字词,则匹配失败,匹配字段去掉最后一个字,剩下的字作为新的匹配字段,再进行匹配,如此进行下去,直到匹配成功为止。

设词典中最长的词由MaxNum个字组成,句子长度为句子中单字的个数,设为Len。数组S[N-1]存放长度为N的句子,i,j,k,position为变量;wik表示S[i]到S[wik+i]组成一个分词单位;dik是wik所表示的分词单位的属性,如它在词典中的位置、词性等;函数match(S[i],S[i+j])判断字串S[i]~S[i+j]是否为字典中的词。

中文分词模块310的流程如下:1)输入句子,调用词典知识库,从句尾开始查词典匹配,如果匹配完毕,则转向3)。2)判断字串S[i],S[i+j]是否超出句子尾,是否为词典中的词,如果是,匹配字段作为一个词被切分出来;如果词典中找不到这样的一个i字词,则匹配失败,匹配字段去掉最后一个字,剩下的字作为新的匹配字段,再进行匹配,返回1);3)输出分词结果。

词性标注模块320,结合中文分词模块310处理结果,调用词性规则库,对分出的词进行词性标注。根据句子中的上下文信息给句中每个词确定一个最为合适的词性标记。

流程如下:1)从分词结果中取词串Span:对词串中的每个词,查词性规则库,若查到,将该词所有词性标记取出,登记在数组Tags[i][j]中,i代表词的序号,j代表词性标记序号,将该词该标记的出现次数登记在Freqs[i][j]数组中;若未查到,将开放类词性标记赋给该词,登记在Tags[i][j]中,将Freqs[i][j]的值置为1。2)对词串中的每个词的每个可能的词性标记,(1)计算该标记的累计值;(2)记录该标记的最佳前驱标记。当词串中最后一个词的词性标记确定下来后,顺次取出各词的最佳前驱标记,即得到词性标注结果。将词串处理类数据重新初始化,准备下一个词串的标注。返回到1)。

关键词抽取模块330,依据词性在句子中的重要程度规则(通常名词,动词,代词,形容词对句子最重要)及利用停用词表过滤停用词进行关键词的抽取。令S为句子,w为S中任一词,S′为S中关键词序列。流程如下:1)从S中取一词w,然后查询停用词表,如果查找到词w转向2),如果词取完毕,转向4);2)调用句子成分规则库,判断w是否为名词、代词、动词或形容词,如果是,抽取w,读入下一词,转向3);4)由S中抽取的所有关键词组成关键词序列S′,返回S′。

候选问题集提取模块包括:索引模块410、检索模块420、候选问题集模块430。可以快速提取候选问题集,为问句相似度计算模块提高计算对象。

候选问句检索的目的是使后续的相似度计算等较复杂的过程都在候选问题集这个相对较小的范围内进行。要求高效检索。候选问题集就是从大规模问句集中快速取出的一个模糊相关、但相对较小的子集合,因此,该部分的功能可以通过信息检索技术予以实现。这样,一方面可以选择使用高效的检索技术,使检索效率高;另一方面,该模块的功能改进、升级容易,移植性好。

采用高效检索,快速定位问题库中相似的问题,为句子相似度计算模块500提供了问题库问题集,候选问题集提取模块400具有很重要的地位。

索引模块410用于对数据服务器100提供的问题库内容(XML存储)进行建索引库130,将XML中的关键词串项作为索引词,按索引词和文档相关信息建立索引库130。随着问题库150的更新,增量建索引,更新索引库130。

检索模块420,由问题库150导出数据,存储于XML文档140中,利用索引库130对XML文档140进行快速地检索。

如图4所示,检索模块420处理流程为:(1)、输入检索问题的关键词串,并将其作为检索词;(2)、调用索引库,进行检索;(3)、判断关键词串是否为空,若为空返回(1),不为空,进入(4);(4)、检索,返回与关键词串相关的问题的ID号;(5)、输出问题的ID号。

候选问题集模块430根据问题预处理模块300提供的中间处理结果,作为检索词串提交给检索模块420。调用检索模块420,对XML文档140进行检索,并解析XML文档140,得到对应的问题库150问题的ID编号。

如图5所示,该模块的处理流程:(1)、输入检索问题的ID号;(2)、查询问题库中对应的问题;(3)、判断是否存在问题ID对应的问句,如果不存在,返回(2);(4)输出问题集中问题对应的关键词串。

句子相似度计算模块500,计算检索问句与候选问题集中问句的相似度,直接影响了检索的结果。是本问答系统的一个核心模块。

如图6所示,该模块主要利用设计的基于概念的中文句子相似度计算方法,求解检索问句与候选问题集中问句的相似度,中文句子相似度计算通过关键词串同义词扩展模块510扩展检索问句的关键词串,利用扩展结果,调用词形相似度计算模块530,再调用词序相似度计算模块520、词长相似度计算模块540,分别求出词形相似度、词序相似度、词长相似度。然后,调用句子相似度计算子模块550,将三项加权求得问句的相似度。

处理流程为:(1)、输入检索问题与预选问题集中的问题(由候选问题集模块400得到)的关键词串;(2)、调用概念扩展知识库,对检索问句关键词串进行同义概念扩展,计算词形相似度;(3)、计算两关键词串中相同词的个数,计算词长相似度;(4)、计算检索问句的关键词在候选问题集问题中相同关键词所对应的词序,计算词序相似度;(5)、将(2)、(3)、(4)的相似度计算结果,进行相似度加权,计算出问句相似度,并输出。

下面对句子相似度计算模块500的内部各模块作详细的说明。

如图2所示,句子相似度计算模块500包括关键词串的同义词扩展模块510、词形相似度计算模块530、词序相似度计算模块520、词长相似度计算模块540和句子相似度计算子模块550。

具体介绍各模块的功能、实现的步骤前,先介绍相关知识如下:

相关概念介绍:

(1)、定义1:词形相似度,反映两个句子形态上的相似程度,以两个句子中所含相同词或同义词的个数来衡量。设S1、S2为两个句子,则S1、S2的词形相似度为:

Simword(S1,S2)=    (1.1)

2*((λ1*SameWord(S1,S2)+λ2*SimWord(S1,S2))/(Len(S1)+Len(S2))

式中SameWord(S1,S2)为S1、S2中所含相同词的个数,SimWord(S1,S2)为S1、S2中所含同义词的个数,λ1,λ2分别代表SameWord(S1,S2)和SimWord(S1,S2)的重要程度。当一个单词在S1、S2中出现的次数不同时以出现次数少的计数;Len(S)为句子S中所含词的个数。意义:两个语句相同的词或同义词的个数越多,两个语句越相似;

(2)定义2:词序相似度,反映两个句子中所含相同词或同义词在位置关系上的相似程度,以两个句子中所含相同词或同义词的相邻顺序逆向的个数来衡量。设S1、S2为两个句子,OnceSameWord(S1,S2)为S1、S2中所含仅一次的相同词,OnceSimWord(S1,S2)为S1、S2中所含仅一次的同义词的集合,Pfirst(S1,S2)为OnceSameWord(S1,S2)和OnceSimWord(S1,S2)中的词在S1中的位置序号构成的向量,Psecond(S1,S2)为Pfirst(S1,S2)中的分量按对应词在S2中的次序排序生成的向量,RevOrd(S1,S2)为Psecond(S1,S2)各相邻分量的逆序数(跟标准列相反序数的总和),则S1、S2的词序相似度为:

Simord(S1,S2)=1-(RevOrd(S1,S2)/(|λ1*OnceSameWord(S1,S2)+λ2*OnceSimWord(S1,S2)|-1))1|λ1*OnceSameWord(S1,S2)+λ2*OmceSimWord(S1,S2)|=10|λ1*OnceSameWord(S1,S2)+λ2*OnceSimWord(S1,S2)|=0---(1.2)

这样定义词序相似度的优点是:当一个分句或词语整体发生长距离移动后,仍与原来的语句很相似。实现快捷,算法复杂度为O(m),其中m=|OnceWord(S 1,S2)|;

(3)定义3:语句长度相似度,Len(S1),Len(S2)分别表示语句S1和语句S2的长度,即两个语句中的词的个数。语句长度相似度SimLen(S1,S2)由公式(1.3)决定:

Simlen(S1,S2)=1-abs(Len(S1)-Len(S2))/Len(S1)+Len(S2)    (1.3)

容易得出:SimLen(S1,S2)∈[0,1]意义:两个语句的长度越接近,两个语句越相似。例:中Len(S1)=11,Len(S2)=8,则SimLen(S1,S2)≈0.84;

(4)定义4:句子相似度,反映两个句子之间的相似程度。通常为一个0~1之间的数值,0表示不相似,1表示完全相似,数值越大表示两句越相似。语句X,Y的最终相似度Sim(S1,S2)由公式(1.4)决定:

Sim(S1,S2)=λ1*Simword(S1,S2)+λ2*Simorder(S1,S2)    (1.4)

3*Simlen(S1,S2)

其中,λ1,λ2,λ3常数,且满足λ1+λ2+λ3=1,显然Sim(S1,S2)∈[0,1]。在语句相似度中我们应该能够理解词形相似度起着主要作用,语句长度相似度和词序相似度起着次要的作用,因此λ1,λ2,λ3取值时应该有λ1>>λ2,λ3。式中WordSim(S1,S2)为S1,S2的词形相似度;OrderSim(S1,S2)为S1,S2词序相似度;OrderSim(S1,S2)为S1,S2的句长相似度。通过实验,取λ1=0.9,λ2=0.05,λ3=0.05。

关键词串的同义词扩展模块510、词形相似度计算模块530、词序相似度计算模块520和词长相似度计算模块540的功能、实现的步骤:

关键词串的同义词扩展模块510,主要是对输入的关键词串进行同义扩展。具体实现步骤如下:1)输入检索问句的关键词串keywords1;输入候选问题集问句的关键词串keywords2;2)调用概念扩展知识库,对keywords1进行同义概念扩展,keywords1扩展的结果存入字符串extendkeywords中,完成同义扩展。

词形相似度计算模块530,主要是计算两个句子的词形相似度,反映两个句子形态上的相似程度,以两个句子中所含相同词或同义词的个数来衡量。具体实现步骤如下:1)由关键词串的同义词扩展模块510传递过来检索问句的关键词串keywords1,候选问题集问句的关键词串keywords2及keywords1扩展的字符串extendkeywords;2)计算keywords1中的关键词个数wordsNum1;计算keywords2中的关键词个数wordsNum2;3)计算extendkeywords与keywords2中相同关键词的个数samenum;4)带入公式:2.0*samenum/(wordsNum1+wordsNum2),计算出词形相似度simword;

词序相似度计算模块520,主要是计算两个句子的词序相似度,反映两个句子中所含相同词或同义词在位置关系上的相似程度,以两个句子中所含相同词或同义词的相邻顺序逆向的个数来衡量。具体实现步骤如下:1)由关键词串的同义词扩展模块510传递过来检索问句的关键词串keywords1,候选问题集问句的关键词串keywords2;2)计算keywords1与keywords2中所含不重复的相同关键词,存入数组oncesimwords;3)计算Pfirst(keywords1,keywords2),为oncesimwords中的词在keywords1中的位置序号构成的向量,4)计算Psecond(keywords1,keywords2),为Pfirst(keywords1,keywords2)中的分量按对应词在keywords2中的次序排序生成的向量;5)计算revord,为Psecond(keywords1,keywords2)各相邻分量的逆序数(跟标准列相反序数的总和);6)带入公式:1-1.0*revord/(samenum-1),计算出词序相似度simorder;

词长相似度计算模块540,主要是计算两个句子的词长相似度,反映两个句子中所含词的数目的相似程度。以两个句子中所含词的个数比较来衡量。具体实现步骤如下:1)由关键词串的同义词扩展模块510传递检索问句的关键词串keywords1,候选问题集问句的关键词串keywords2;2)计算keywords1中的关键词个数,设为整型变量wordsNum1;计算keywords2中的关键词个数,设为整型变量wordsNum2;3)计算keywords1,keywords2中关键词个数之差distince;4)带入公式:1.0-1.0*simorder/(wordsNum1+wordsNum2),计算出词长相似度simlen;

句子相似度计算子模块550,根据词形相似度、词序相似度和词长相似度对句子相似度的重要程度,词形相似度跟句子的语义最相关,重要程度最高。通过实验测试,获得较好的重要程度系数。对求出词形相似度、词序相似度、词长相似度按重要程度系数加权求得问句的相似度。具体实现步骤如下:1)分别由词形相似度计算模块530、词序相似度计算模块520和词长相似度计算模块540传递词形相似度、词序相似度、词长相似度;2)带入公式:λ1*simword+λ2*simorder+λ3*simlen,计算得到句子相似度similary;3)输出句子相似度similary。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号