85国家自然科学基金(61272344,61202233,61370055)资助收稿日期:2013−06−17;修回日期:2013−09−30;网络出版日期:2013−11−07北京大学学报(自然科学版),第50卷,第1期,2014年1月ActaScientiarumNaturaliumUniversitatisPekinensis,Vol.50,No.1(Jan.2014)doi:10.13209/j.0479-8023.2014.023面向知识库的中文自然语言问句的语义理解许坤冯岩松†赵东岩陈立伟邹磊北京大学计算机科学技术研究所,北京100080;†通信作者,E-mail:fengyansong@pku.edu.cn摘要设计从自然语言问句到结构化查询的转换框架。该方法从自然语言问句的句法结构入手,提出一套启发式识别实体与关系的方法,并利用语料库建立从实体到知识库的映射,对谓词进行消歧,进而转化为计算机可理解的结构化查询语言。从百度知道抽取人物、地点、组织3类共42个问题作为标准测试集。实验结果表明,所提出的框架能够有效地将中文自然语言问句转换为结构化查询,为下一代智能问答系统打下良好的基础。关键词自然语言问句;知识库;查询语义图中图分类号TP391AutomaticUnderstandingofNaturalLanguageQuestionsforQueryingChineseKnowledgeBasesXUKun,FENGYansong†,ZHAODongyan,CHENLiwei,ZOULeiInstituteofComputerScienceandTechnology,PekingUniversity,Beijing100080;†Correspondingauthor,E-mail:fengyansong@pku.edu.cnAbstractAframeworktotransformnaturallanguagequestionsintocomputer-understoodablestructuredqueriesispresented.TheauthorsproposetousequerysemanticgraphtorepresentthesemanticsinChinesequestions,andadoptpredicateandentitydisambiguationtomatchthequerygraphtotheschemaofaknowledgebase.Theauthorscollectabenchmarkof42frequently-askedquestionsrandomlysampledfrom3categoriesofBaiduKnows,includingperson,locationandorganization.ExperimentresultsshowthatproposedframeworkcaneffectivelyconvertnaturallanguagequestionsintoSPARQLqueries,andlayagoodfoundationforthenextgenerationofintelligentquestionansweringsystems.Keywordsnaturallanguagequestion;knowledgebase;querysemanticgraph随着万维网的不断发展,出现越来越多的大规模知识库,比如Yago[1],yago2[2],DBpedia[3]和FreeBase[4]等。这些知识库覆盖面广、数据量大,例如DBpedia有340万个实体,300亿条三元组。面对如此庞大的结构化数据,让用户可以方便地使用这些知识库查询变得越来越重要。这些知识库数据量大,但是彼此的架构并不相同,所以普通用户很难在这些知识库轻松地搜索相关信息。知识库通常都以RDF()的格式存储数据。SPARQL[5]是目前已知的比较高效的查询RDF数据的语言,但是通常只有专业的程序员才能熟练掌握SPARQL语法。普通用户更愿意选择使用关键词或者自然语言问句来查找需要的信息。其中,基于关键词的查询应用最广泛,但是有一些语义复杂的问题不适合用关键词查询,比如用户想知道“刘德华的妻子毕业于哪里”,但是当他们在百度上输入“刘德华妻子毕业”这样的关键词,返回的结果基本上都是介绍刘德华。事实上语义复杂的问题更适合使用SPARQL等结构化查询语言在知识库上查询。所以理想的解决方法是用北京大学学报(自然科学版)第50卷86户使用自然语言描述问题,而系统利用SPARQL语言在知识库查询。在将自然语言问句转换为SPARQL的过程中,难点在于如何让计算机理解用户的查询语义。为此,本文提出查询语义图的概念,并且提出利用句法分析树构造用户的查询语义图。在本文提出的查询语义图中,顶点代表命名实体或者名词性变量,边代表顶点之间的语义关系。生成初步的查询语义图后,利用实体消歧和谓词消歧,将查询语义图中的顶点与边映射到知识库中的实体与关系。在谓词消歧时,首先为知识库的每个关系收集相关度比较高的动词词组和名词词组。例如,对于知识库中的关系“毕业院校”,我们从语料库中收集到“毕业”、“考入”、“就读”、“报考”等与“毕业院校”相关度比较高的关键词。接着定义一种计算词语相关度的算法,利用收集到的词将图中的谓词映射到语义上最相关的关系。完成实体消歧和谓词消歧后,用户的查询语义图中的实体和关系被链接到知识库。最后将查询语义图转换成SPARQL语句,并利用基于RDF的搜索引擎G-store[6]进行查询。本文针对中文自然语言查询,从问句的句法结构入手,使用查询语义图表示用户的查询语义,并利用中文语料库进行消歧,在用户的查询意图与知识库的底层表示之间建立映射,从而获得结构化查询语句。此外,我们还收集面向百科知识库的问题集合,作为中文问题的标准测试集,并对所提出的方法进行验证。1相关工作目前,面向知识库的问题理解主要针对英文的自然语言问题。其中有一些方法利用句法分析树和知识库来启发式理解用户的查询语义,还有一些利用用户对答案的反馈来训练问答系统。Yahya等[7]提出一种理解自然语言问句的方法,他们首先将问句划分成短语,并将这些短语映射到知识库中的实体、类别和关系,接着利用整数线性规划实现实体消歧。本文中,实体消歧和谓词消歧是分开进行的,先对实体进行消歧,然后对候选谓词进行消歧。Unger等[8]提出一种利用模板和句法分析树来生成结构化查询的方法。本文不需要预先定义这样的模板。Ferrucci等[9]展示了一个被称作“Watson”的深度问答系统,他们将一个问句分解成一些线索和子线索,目标就是找到这些线索的答案。Pythia等[10]提出一个依赖问句深度语言分析的系统,首先手动为每一个本体构造描述该本体语义的词典,然后利用该词典来处理语义上比较复杂的问题。FREyA系统[11]依赖于用户对问句的反馈来进行命名实体消歧,需要有监督地训练问答系统。在该方法中,用户提出一个问题后,系统返回给用户一些候选的语义,用户从中选择最合适的语义,系统则根据用户的选择进行训练。PowerAqua[12]也是一个问答系统,该系统的知识库来自于不同的资源。这样做会造成回答的答案质量比较低,数据总体的噪音比较大。本文只使用互动百科作为底层的知识库,所以答案的质量会比较好。我们的方法与前人的工作有两点区别。首先,前人的工作主要用来处理英文的自然语言问题,缺乏对其他语言(如中文)的关注。与英文不同,中文中承担语法功能的一些结构与其词性之间没有直接关联,使得很多英文中的启发式方法在中文中无法直接使用。比如,在英语中,谓语结构一般由动词构成,而在汉语里,承担谓语功能的形式比较多,可以是形容词、动词和名词。其次,前人的工作中大多数采用现有的英文资源,比如WordNet[13]和PATTY[14],但是中文中类似的资源少,而且覆盖面较小。这个问题也是转换中文自然语言查询的一个难点。比如在进行谓词消歧的时候,只能根据现有的语料收集与关系相关度比较高的词汇。已有的很多工作都使用QALD-1标准测试集①。对于任何一个知识库,QALD-1都提供50个不同语义复杂度的训练问题及其相应的SPARQL查询,同时还提供50个类似的测试问题,训练问题和测试问题都是英文自然语言问句。由于目前并没有类似的中文评测数据,所以我们从百度知道抽取人物、地点、组织3类共42个询问百科知识的事实类问题,将其作为本文的测试问题。2基本框架给定一个用自然语言描述的问句,首先需要对句子进行预处理,包括分词、命名实体识别和句法分析。得到句法分析树后,从中获得用户的查询语义,并构造出查询语义图,然后将图中的点映射到①第1期许坤等:面向知识库的中文自然语言问句的语义理解87知识库中的实体,并将图中的边映射到知识库中的关系。最后依据查询语义图生成结构化查询语句(如SPARQL),利用基于RDF的查询引擎G-store[6]得到最终的查询结果。3预处理用户提出一个用自然语言描述的问题后,首先分词并获得问句的句法结构、POStag以及词之间的依赖关系。在实验中,我们使用ICTCLAS①对问句进行分词,利用斯坦福大学的工具StandfordParser对问句做句法分析,得到相应的句法分析树。图1为问句“刘德华的妻子出生于哪里”的句法分析树。3.1查询语义图的定义本文假设用户所问问题均基于实体的关系或者实体间的关系,而且是事实性问题。我们认为无论一个自然语言问句多么复杂,它都在描述实体之间的关系。比如对于问题“刘德华的妻子出生于哪里”,共涉及3个实体,设为E1,E2和E3,其中E1代表刘德华,E2是一个类型为人的实体,E3是一个类型为地点的实体。它们之间的关系:实体E2是实体E1的妻子,实体E3是实体E2的籍贯。根据关系的复杂程度将自然语言查询分为两种:单关系查询和多关系查询,定义如下。1)单关系查询。如果一个查询只涉及两个实体,即查询只涉及一种关系,那么这种查询为单关系查询。2)多关系查询。如果一个查询涉及的实体数目超过两个,即查询涉及多种关系,那么这种查询就是多关系查询。在查询语义图中,将查询中涉及的每个实体视作一个点,将实体之间的关系视为边。那么对于任意一个查询,都可以构造出一个查询语义图。如果查询是单关系查询,查询语义图就只包含两个点和一条边。如果查询是多关系查询,语义图则会包含多个点和多条边。图1包含多关系查询“刘德华的妻子出生于哪里”的查询语义图。总的来说,查询语义图是用来描述用户的查询中实体关系的一张图。3.2构造查询语义图查询语义图主要描述问句中实体之间的关系,而问句的句法分析树不仅能精确地描述句子成分之间的语法关系,更可以准确地表达用户的查询语义。本文提出一个基于句法分析树的算法。由于中文本身的复杂性,实体与关系的表达方式有很多,但实体在句法分析树中一般都以名词的形式出现,而关系则一般以名词或者动词词组的形式出现。例如,在图1中,动词性结构“出生于”描述“刘德华”和“哪里”之间的关系。名词性成分“刘德华”和“哪里”则代表实体。为了验证这个观点的正确性,我们从百度知道随机抽取20个问题,分析①图1问句“刘德华的妻子出生于哪里”查询语义图的生成过程Fig.1Procedureofconstructingthesemanticgraphofquery“wherewasLiuDehua’swifeborn”北京大学学报(自然科学版)第50卷88它们的句法分析树,经过统计,发现90%的问句中的实体都以名词的形式出现,80%的关系都以名词或动词词组的形式出现。从句法分析树构造查询语义图的算法描述如下。在构造查询语义图时,需要分析句法分析树中的每个节点。如果节点属于名词性节点(构造查询语义图算法第3行)