张克亮,李伟刚,王慧兰
(1. 解放军外国语学院,河南 洛阳 471003;2. 空军指挥学院, 北京 100097)
基于本体的航空领域问答系统
张克亮1,李伟刚2,王慧兰2
(1. 解放军外国语学院,河南 洛阳 471003;2. 空军指挥学院, 北京 100097)
该文设计并实现了基于本体的航空领域问答系统,该问答系统采用面向领域本体的问题分类方法和结构化语义信息提取方法,将自然语言问题转换为SPARQL查询语句,在本体知识库中检索答案。实验结果表明,该系统能够处理该领域内的大部分常见问题,取得了82.97%的平均准确率。
问答系统;本体知识库;问题类型;结构化语义
互联网是人类历史上的一项伟大发明,它大大加速了人类文明的进程,人们借助搜索引擎可以便捷地获取互联网上的信息。然而,随着信息的爆炸式增长,搜索引擎也越来越不能满足用户快速、准确获取信息的需求。尤其在特定领域,例如,医疗、金融、旅游、教育、军事等,用户迫切需要更加智能、准确的信息检索工具。
在这种背景下,问答系统逐渐成为国内外研究的重要课题。问答系统允许用户以自然语言方式进行提问,系统返回准确、简洁的答案。因此问答系统比搜索引擎更方便、高效,将是下一代搜索引擎发展的方向。
近年来,随着语义网的快速发展,传统的Web页面中引入了语义知识,即不仅局限于展示页面内容,而且增加语义信息,使得Web上的信息能够被机器自动处理。谷歌的研究表明当前互联网上有5%的网页经过了语义标注,而标注网页的数量预计很快会达到50%*Google Semantic Technologies invited talk, San Francisco, 2010:http:www.readwriteweb.com/archives/google_semantci_web_push_rich_snippets_usage_grow.php。网络上语义资源的极大丰富,为我们开发更加智能、新一代知识检索工具提供了可能。国外研究机构已经发布了多个基于本体的问答系统,例如,QuestIO、QACID、PowerAqua、Pythia等,这些问答系统的成功也为基于本体问答系统的研究指出了新的方向。
目前国内外众多研究人员将领域本体运用到问答系统中,希望利用本体的语义描述信息和推理能力来提高问答系统的性能。
PowerAqua[1]是面向整个语义网上语义资源的问答系统。该系统首先将用户问题转换为查询三元组,其次借助PowerMap模块将查询关键词映射为各种可能的语义资源,并排除不合理的映射;再次利用三元组映射模块将前两个阶段的结果映射到本体知识库中对应的成分;最后系统将各个知识库中查询的答案进行整合,经过排序后返回给用户。该系统能够对大型、异构的语义资源库进行查询,但是缺乏处理复杂问题的能力。
Pythia[2]问答系统使用基于本体的语法对用户问题进行深层分析,该部分利用LTAG进行句法分析、DUDEs进行语义分析,将问题转换为FLogic形式查询语言,最后在DBpedia本体知识库中查找问题答案。由于该系统采用了深层句法分析,因此能够回答各类复杂的问题,例如,“最高”、“最大”等最值问题,以及“超过”、“小于”等比较类问题,并取得了67%的准确率和82%的召回率。
而在国内,李茹等人[3]设计了旅游信息问答系统,在TREC定义的问题类型基础上,利用本体思想,对旅游领域问题进行分类,具体分为人物、地点、时间、数字、实体、描述和其他等七种问题类型。
张巍[4]在其设计的医院领域问答系统中,采用本体技术构建医院领域本体知识库,对用户查询进行浅层语义分析,借助预先定义的语义块和语义块判定规则,生成问句向量。最后将生成的问句向量转换成形式化查询语言SPARQL,并在本体知识库中查询问题答案,系统取得了较高的查准率和查全率。
已有的研究成果为本研究奠定了坚实的基础,本研究不仅将本体知识库作为答案获取的知识源,还将其充分运用在问题分析的整个过程中,研究基于本体的问题分类方法以及结合问题类型获取问题结构化语义的方法,从而提高问题理解的能力,改善基于本体问答系统的性能。
常见的问答系统通常由三部分组成: 问题分析、信息检索和答案处理。基于本体问答系统的体系结构与常见的问答系统有所不同,它的知识源不是非结构化的文档集合,而是结构化并且具有明确语义的知识库,所以检索到的就是准确的答案,不需要再进行答案抽取。该类问答系统通常包括问题分析和本体知识库查询两部分。因此需要针对本体知识库的特点,运用一系列与之相适应的处理技术,才能有效提高问答系统的性能。本研究构建的问答系统的流程如图1所示。
图1 问答系统流程图
问答系统首先进行分词、词性标注以及停用词处理等形态分析;其次,采用基于本体的问题分类方法对问题进行分类;然后,根据问题类型提取句子的结构化语义信息,并对每种类型问题编写相应的SPARQL查询模板;最后将问题的结构化语义结合SPARQL查询模板生成问题对应的SPARQL查询语句,在本体知识库中查找问题的答案,并生成最终的答案。
4.1 形态分析
在形态分析阶段,我们采用中国科学院计算技术研究所的汉语词法分析系统ICTCLAS,该系统是目前最优秀的中文词法分析系统之一。但是处理特定领域文本时,因为大量的专业术语没有被收录到系统词库中,造成分词的结果不准确,甚至是错误。例如,“F-22战斗机挂载的空空导弹有哪些”的分词和词性标注结果为:
F/x-22/m 战斗机/n 挂载/v 的/u 空空导弹/n 有/v 哪些/r
专有术语“F-22战斗机”被切分成多个词语的碎片“F/x-22/m 战斗机/n”,这些词语在军用飞机领域中表示独立的概念,如果作为一个专业术语来处理对后续的问题理解和检索则会更加准确、方便。利用之前研究构建的军用飞机和舰船本体知识库[5],将本体知识库中的类名、实例名、属性名作为领域专业术语,构建了规模为2 100词的领域专业词库,这样系统进行分词时就会优先按照用户自定义词典中的词条进行分词,从而将领域专业术语正确的识别出来。
问题分析阶段的一个重要任务就是将问题中的关键词映射为本体中对应的元素,这样才能从语义层次上对问题进行理解。为了方便关键词向本体元素的映射,我们结合本体知识表达的方式,定义了几个本体标示符,它们分别是TYPE、OP、DP、ST。其中TYPE代表本体中的类,例如,“战斗机”就是一个类。OP代表对象属性,它将本体中的两个类或者实例关联起来,例如,“挂载”就是一个OP,<战斗机,挂载,空空导弹>就是它的一个例子。DP代表数据属性,它用来描述类的内在属性,它将一个实例和字符串或数值关联起来,例如,“作战半径”就是一个DP。ST代表本体中的具体实例,例如,“F-22战斗机”就是一个实例。
本体通过若干个相互关联的三元组来描述领域知识,其中每个三元组可以表示为<主语,谓语,宾语>的形式。其中主语通常表示某个类或实例,也就是本体标示符TYPE或ST,宾语可以是某个个体或者字符串,也就是本体标示符ST,而三元组中的谓语则由OP或DP充当。
按照类似的方法,我们将军用飞机和舰船领域专业词库进行本体标注,也就是将领域内的专业术语赋予明确的语义类别。添加领域词表后,ICTCLAS就能直接识别问题中和本体元素直接对应的关键词,并将它们的语义类别标示出来。“F-22战斗机挂载的空空导弹有哪些”进行词性标注、本体映射以及停用词处理后的结果为:
F-22战斗机[ST] 挂载[OP] 空空导弹[TYPE] 有/v 哪些/r
问答系统就能理解“F-22战斗机”是战斗机的具体型号,“中程空空导弹”表示的是一种机载武器,“挂载”则是“F-22战斗机”和“中程空空导弹”之间的语义关系。此时,这些关键词不再是孤立的、毫无关系的,而是赋予了计算机可以理解的语义,并且建立起了语义关联。
4.2 基于本体的问题分类
通过对领域内大量问题的分析,我们发现一个问题往往包含一个或者多个已知条件,一个或者多个未知条件,不存在没有已知或未知条件的问题。问题中的未知条件即是该问句所对应的答案类型,已知条件作为对未知条件的约束条件而存在。因此,只要分析出问题中所有的已知条件和未知条件,并利用本体对这些条件进行标注,提取问题的结构化语义信息,便可以说理解了这个问题。
当前,无论基于统计还是基于规则的问题分类方法中,缺乏语义理解的问题一直没有得到解决。这是因为要解决语义问题,必须建立一个通用的语义词典,在开放领域中困难是很大的。而在特定领域中,由于词汇较少、词汇的歧义也相对较少,我们才有可能借助领域本体对问题进行分类,并对关键词进行语义解释,挖掘关键词之间的语义关系,这样才能准确理解问题。
通过对本体的相关介绍我们得知,本体对领域知识描述的基础是类、属性和实例这三个本体描述元语。利用本体描述元语可以将用户的查询需求拆解,进行问题分类,类似的研究参见戴维民[6]、刘杰[7]等,这些研究的不足在于它们的问题分类种类较少,不能很好覆盖用户查询需求。
假设1 用户查询问题的语义可以用一个或者多个三元组近似地表示,三元组表示形式为<主语,谓语,宾语>。“F-22战斗机挂载了哪些空空导弹”的三元组表示为:
假设2 本体标示符TYPE和ST可以对应三元组中的主语或宾语,而DP和OP则对应谓语;
本研究分析了大量军用飞机和舰船领域用户查询问题,将用户的查询需求拆解为以下几种基本类型:
① 查询某一类事物,例如,“什么是电子侦察机”;
② 查询某一类事物的分类,例如,“轰炸机 包括哪些类型”;
③ 查询某一类事物的某一方面属性,例如,“什么是战斗机的转场航程”;
④ 查询某一类事物中实例的最值,例如,“世界上排水量 最大的航空母舰是哪个”;
⑤ 查询某一实例某一方面的属性值,例如,“F-35战斗机的作战半径 是多少千米”;
⑥ 查询某一实例与其他实例之间的关系,例如,“金刚级驱逐舰的制造商是谁”;
⑦ 比较两个实例的某一方面的属性,例如,“B-2轰炸机和B-52轰炸机的载弹量谁的大”;
⑧ 查询某一实例与某一类事物实例的关系,例如,“苏27战斗机 挂载的空空导弹有哪些”;
⑨ 查询属性值为某一给定值的一类事物,例如,“作战半径 大于1500千米的战斗机有哪些”;
⑩ 查询两个实例是否存在特定关系,例如,“小鹰号航母 部署在横须贺海军基地吗”;
除了上述几种基本问题类型外,还包括由这些基本问题类型组合而成的复杂问题类型,例如,
假设3 用本体标示符表示问题中已知信息,用“?”或者“?+本体标示符”表示待查询对象,就是答案类型。用符号m表示数值,Max表示最值类型问题,Comp表示比较类型问题。
基于上述三条假设,将问题类型形式化表示,结果如表1所示。
表1 问题类型形式化表示
4.3 问题类型识别
借助形式化的问题类型,问答系统对问题形态分析后,就能初步判断它的问题类型,提取问题的结构化语义,获取问题的已知和未知信息。“F-22战斗机挂载的空空导弹有哪些”形态分析后的结果为:
F-22战斗机[ST] 挂载[OP] 空空导弹[TYPE] 有/v
问答系统根据问题中的标记符号的组合与问题类型匹配,如果能够直接匹配,就确定问题类型,而问题中的动词“有/v”此时将忽略,不做处理。该问题类型形式化表示为“ST+OP+TYPE”,对应的问题类型为⑧,即查询实例“F-22战斗机”和“空空导弹”类中的哪些实例存在“挂载”关系。如果没有对应的问题类型,则需要判断问题中其他关键词能否映射为本体中的对应元素,映射之后再次匹配问题类型。
再比如问题“排水量大于50 000吨的航空母舰有哪些”,形态分析后结果为:
排水量[DP] 大于/v 50 000/m 吨/q 航母[TYPE] 有/v
根据问题的标记符号组合,该问题类型为⑨,但是还需要进一步判断问题中的动词“大于/v”,才能最终确定问题的语义。因为用户也可能会查询“排水量小于50 000吨的航空母舰有哪些”、“排水量大于50 000而小于90 000吨的航空母舰有哪些”之类的问题,而这几种问题虽然属于同一个问题类型,但是查询策略和查询结果是完全不同的,需要根据问题中的动词做具体的区分。
4.4 结构化语义获取
要想进一步提高问答系统的性能,单纯依靠词法、句法的分析是远远不够的,必须要进行语义甚至语用方面的分析。所谓语义分析,指的是根据句子的句法结构和句中每个实词的语义推导出能够反映这个句子意思(即语义)的某种形式化表示。语义分析的目的在于获取问题的结构化语义,分析问题的已知和未知信息。
用户问题经过形态分析和问题分类之后,大部分问题就能获取对应的问题类型,实现初步的语义理解。由于我们使用本体进行知识表示,这就要求在问题处理中要进行深层次的语义挖掘。“F-22战斗机挂载的空空导弹有哪些”的问题类型是“ST + OP + TYPE”,本体三元组表达式为
< F-22战斗机[ST],挂载[OP],?空空导}
其中?空空导弹是问题的答案,它的语义类别是空空导弹,是问题的未知信息。将问题的三元组表达转换为本体三元组的目的在于获取问题的结构化语义,明确答案的语义类型,提高问答系统的准确率。如果只是利用“F-22战斗机”、“挂载”这两个关键词在本体知识库中查询问题答案,会返回许多不相关的答案。因为在本体知识库中定义了<战斗机,挂载,空空导弹/空地导弹/空舰导弹>,不对问题答案做任何的语义限制,就返回“F-22战斗机”挂载空地导弹和空舰导弹的信息,而这些内容不是用户需要的。
问答系统提取问题的结构化语义后,就可以将其方便地转换成本体查询语句,在本体知识库中查找答案。在本研究中,我们采用Jena*http://jena.apache.org/对本体进行解析、操作,使用SPARQL*http://www.w3.org/TR/rdf-sparql-query/语言进行本体知识库查询,最终返回问题答案。
对每种问题类型编写相应的SPARQL查询模板,从而解决自然语言问题向SPARQL查询语句转换的难题。SPARQL查询模板中的内容都是本体标示符,要想在本体知识库中查询问题的答案,还必须将问题的本体三元组和对应的SPARQL查询模板结合起来,将SPARQL查询模板中的本体标示符替换为问题中的关键词,这样才能最终生成问题的SPARQL查询语句。“F-22战斗机挂载了哪些空空导弹”的本体三元组结合该问题的SPARQL查询模板,生成SPARQL查询语句为:
@prefix mil:
@prefix rdf:
SELECT ?空空导弹
WHERE { mil:F-22战斗机 mil:挂载 ?空空导弹. ?空空导弹 rdf: type mil:空空导弹.}
在生成SPARQL查询表达式的过程中,还需要对问题中的一些特殊词进行处理。比如,问题类型④中,需要对问题中诸如“最大”、“最小”、“最重”、“最多”、“最少”等词语进行识别,这样才能够对问题正确的理解,并借助FILTER、LIMIT、ORDER BY等限定词生成准确的SPARQL查询语句。问答系统最终返回的答案为: AIM-120先进中距空空导弹和AIM-9响尾蛇空空导弹。
本实验主要是检测基于本体知识库问答系统的问题分析及答案查找能力,采用以下方法评测: 对于每一个问题人工预先给出正确的结构化语义和问题答案,然后让问答系统对问题进行分析并查找问题答案,如果返回结果与人工给出的结果一致或相似,则认为回答正确,否则错误。该实验主要采用问题分析、答案查找准确率来衡量问答系统的性能。
问题分析准确率是指问答系统正确识别结构化语义的问题数量与所有识别问题所占的比率,其计算公式为式(1)。
(1)
答案查找准确率是指问答系统返回正确的答案占所有返回答案的比率,其计算公式为式(2)。
(2)
为了检验该问答系统的效果,分别从百度知道的舰船、战斗机版块、爱问知识人的舰船飞机版块以及搜搜问问的军事武器版块中各搜集了200个问题。这些版块中包含各种不同内容和形式的领域问题,而且来自不同的提问者和出处,该测试集具有一定的普遍性,领域本体则采用本研究构建的军用飞机和舰船本体知识库。
实验检验了问答系统的问题分析及答案查询能力,实验结果显示,平均问题分析准确率为88.32%,平均答案查找准确率为82.97%,实验结果如表2所示。
表2 问题分析及答案查找实验结果
通过对实验结果分析发现,导致问题分析、答案查找错误的主要原因在于:
第一,问题类型判断错误。一类错误是因为本文提出的问题类型无法覆盖用户输入的问题,在后续研究中,还需要继续丰富、完善基本问题类型,尽可能全面的满足领域问题的查询需求;另一类错误是因为问题的结构过于复杂, 从而导致问题分析模
块无法识别或者误解其问题类型,例如,“苏-35战斗机和F-22战斗机的作战能力相比怎么样?”。因此,在问题分析过程中引入句法分析技术也是很有必要的,从而提高问答系统对不符合规范、结构复杂问题的处理能力。
第二,本体知识库缺乏回答问题的知识。大多数错误是因为本体知识库中缺乏回答这些问题的知识,问答系统要么回答不知道,要么返回一个不相关的答案。在进一步的研究中,还需要不断完善、扩充本体知识库的质量和容量。
本文采用面向领域本体的问题分类方法和结构化的语义信息提取方法,借助SPARQL语句在本体知识库中查询问题答案,在一定程度上提高了用户问题理解和问题分类的准确性,改善了领域问答系统的性能。
[1] Lopez V, Fernandez M, Motta E, Stieler N. PowerAqua: Supporting users in querying and exploring the Semantic Web[J]. Sematic Web Journal, 2011,3(3):249-265.
[2] Unger C, Cimiano P. Pythia: Compositional meaning construction for ontology-based question answering on the Semantic Web[C]//Proceedings of the 16th International Conference on Applications of Natural Language to Information Systems, 2011:153-160.
[3] 李茹,王文晶,梁吉业,等. 基于汉语框架网的旅游信息问答系统设计[J]. 中文信息学报, 2009,23(2): 34-40.
[4] 张巍. 融合FAQ、本体和Jena推理机技术的问答系统研究[D]. 太原理工大学博士学位论文,2011:153-160.
[5] 李伟刚,张克亮,王慧兰. 基于航空领域本体知识库的语义检索研究[C]//第十一届全国计算语言学年会,2011.
[6] 戴维民. 语义网信息组织技术与方法[M]. 上海: 学林出版社,2008.
[7] 刘杰,樊孝忠,王涛. 基于本体的受限领域问答系统研究[J]. 广西师范大学学报,2009, 3(1):169-173.
Ontology-based Question Answering System for Aviation Domain
ZHANG Keliang1, LI Weigang2, WANG Huilan2
(1. University of Foreign Language, Luoyang, Henan 471003, China;2. Air Force Command College, Beijing 100097, China)
We design and implement an ontology-based QA system for aviation domain, It adopts the approach of classifying questions with the help of domain-specific ontology and obtains structural semantic information for the question. Then the question is converted into SPARQL query for answer extraction. The experimental result shows that the system can understand most of the questions with a precision rate of 82.97%.
Question answering system; ontology knowledge base; question type; structural semantic
张克亮(1964—),博士,教授,主要研究领域为计算语言学、机器翻译、知识工程。E-mail:kliang99@sina.com李伟刚(1985—),博士研究生,讲师,主要研究领域为知识工程,领域本体构建。E-mail:a611z@163.com王慧兰(1982—),博士,讲师,主要研究领域为计算语言学,现代汉语语法。E-mail:hlwang9@sina.com
1003-0077(2015)04-0192-07
2013-04-08 定稿日期: 2013-07-27
TP391
A