APP下载

基于Ontology的智能问答系统的研究

2017-06-29王缓缓张警灿

关键词:三元组知识库语句

王缓缓,张警灿,李 虎

(1.三峡大学 计算机与信息学院, 湖北 宜昌 443002; 2.华中科技大学 图像识别与人工智能研究所, 武汉 430074)



基于Ontology的智能问答系统的研究

王缓缓1,张警灿1,李 虎2

(1.三峡大学 计算机与信息学院, 湖北 宜昌 443002; 2.华中科技大学 图像识别与人工智能研究所, 武汉 430074)

提出了一种基于Ontology的智能问答系统模型及设计框架。利用StanfordParser语法解析工具对句子进行语法分析;通过规则引擎对语法树产生的类型依赖关系进行处理,得到句子中的语义信息,生成中间表达式语言DRS。在训练问答系统时,把DRS转换成Ontology三元组存储到RDF库中;而在查询问答系统时,把DRS转换成Sparql查询语句,通过执行Sparql得到查询结果。实验结果证明:这种方案实用、可行,而且可以通过引入本体词库提高问答系统回答的准确度和查询范围。所提供的方法适用于针对特定领域进行的定制。

本体;智能问答系统;类型依赖;篇章表述结构;资源描述框架; SPARQL

智能问答系统(AIQA)是自然语言理解技术在AI领域智能接口领域的一个研究方向。它通过语法解析及语义分析,查询答案并返回给用户。与其他问答系统实现相比,本文提出的方法尝试从语法分析及语义理解的角度查找答案,比基于关键字匹配查询的准确率要高,比基于模板匹配的问答系统更灵活。问答系统作为人工智能的分支之一,早期的代表系统有1970年代的LUNAR系统[1],可分析月球陨石相关资料。1993年的BASEBALL[2]系统能回答关于美国篮球联赛一个赛季的相关问题。自从1999年TREC(text retrieval conference)开始构建QA测试集及评价系统以来,在AIQA领域已经有大量的文献介绍它的原理及实现方案。如ALICE[3]聊天机器人可通过模板定义和匹配的方式定义问题和答案。 Molla 等[4]在 2007年把问答系统定义为一个能回答任意自然语言形式问题的自动机。Qinglin Guo[5]提出了智能答疑方法,其原理是将领域知识用本体表述,以便通过概率依赖模型来分析词义。

笔者基于已有研究成果提出基于Ontology的智能问答系统模型,并设计系统框架,主要有以下几个特点:

1) 问答系统的知识库采用Ontology来形式化描述和组织,具体实现采用OWL[6]语言。OWL语言是由W3C 组织定制,并已成为事实上的定义、实例化以及开发Ontology 应用的标准语言。本系统通过有效利用Ontology 技术,能够消除自然语言的歧义,提高用户自然语言查询语句的命中率和准确率,有效分离智能问答系统的执行算法和领域知识。因此,本系统可以提高智能问答系统的可信度和可移植性。

2) 篇章表述结构(DRS[7])被本系统采用作为AIQA的中间描述语言。基于MG (Montague Grarnrnar),篇章表述理论由2部分组成:篇章语义的构造算法和语义的正确性验证,它是动态的自然语言涵意的形式语义结构,因此可以克服MG 的局限性的语义理论。

3) 系统对自然语言句子的语义理解通过规则引擎技术来实现。规则引擎是专家系统的重要组成部分,其通过定义的规则结合实时数据进行推理。本文通过定义语义规则对StandfordParser[8]产生的类型依赖关系进行推理,得到自然语言的DRS中间描述语言。

4) 本系统需要分离内容与形式或样式,即实现从DRS 到SPARQL[9]查询语句的转换,在系统中通过模板技术来实现。具体包括SPARQL语法设计样式和DRS描述内容。样式由SPARQL语法决定,内容由DRS 提供。

1 系统模型及总体设计

AIQA系统框架由2个模块组成,如图1所示:自然语言处理模块、Ontology知识库模块。自然语言处理模包含2个子模块,完成对自然语言句子的语法分析,得到语法树,然后把语法树转换成类型依赖关系作为语言处理模块的输出。Ontology 知识生产模块利用规则引擎技术,根据事先定义好的语义理解规则和语法分析得到的依赖关系事实数据进行推理,得到DRS数据。Ontology知识生产模块应用规则引擎技术。基于Ontology在较高层次表示查询语句的语义,DRS语言处理模块将自然语句转换成DRS,再转换成RDF三元组存储到RDF,然后转换成SPARQL查询语句。这样做可以保证系统能够从逻辑上、物理上有效分离语言处理和知识表述,使得系统具有较好的可移植性。

生成模块和问题查询模板,其中Ontology知识生成模块和问题查询模板都依赖于自然语言处理模块。

图1 AIQA系统结构

自然语言处理模块的主要功能包括切词、单词变体处理、句法分析和语义解析等。同时,此模块还提供与用户的交互。句法解析器的功能是根据句法、语法和词库解析查询语句生成语法树,然后转换成类型依赖关系数据。之后语义解释器把类型依赖关系转换成规则引擎处理的事实数据,插入到规则引擎中,根据规则来推理,进而生成DRS表达式,即系统的最终输出。

知识库处理模块主要功能是与知识库系统互动,它接收自然语言处理模块的输出DRS表达式,并通过模板引擎技术将其转换成RDF三元组或Sparql语句。一个完整的自然语言问答过程如下所述:首先,在训练问答系统的时候,知识库处理模块把转换生成的RDF三元组数据插入到Ontology本体库中;然后,在查询答案的时候,通过调用执行模板引擎把DRS表达式转换成SPARQL查询语句,接下来调用Ontology本体库的查询模块执行SPARQL语句,得到查询记录集;最后,格式化记录集返回给用户。

定义1 AIQA系统模型∑,用一个7元组表示:

∑={S,SG,L,Ont,DCG,RDFT,SPARQLT};

AIQA处理过程定义为如下公式:

其中:S为用户输入的自然语言语句;SG为自然语言语法规则;L为词库;DCG是自然语言语义语法规则;RDFT表示RDF模板;SPARQLT表示SPARQL模板;STD表示类型依赖关系;SP表示语法解析器;DRS为篇章表述结构;SI是语义解析器;Ont是Ontology知识库;RDF为Ontology三元组;RDFG表示RDF三元组生成器;SPARQL表示知识库查询语句;SPARQLG表示知识库查询语句生成器;OntMS是本体知识库管理系统;R是最终的自然语言查询结果。

2 语言处理模块

2.1 句法分析

句法分析子模块的主要功能是根据自然语言的语法规则和预定义的词库(包括通用词库和领域词库)对自然语言查询句子进行句法分析,得到语法树结构,然后把语法树结构转换成比较容易处理的类型依赖关系结构数据。有很多工具可以实现该功能。本系统选用基于概率统计的Stanford Parser DRS,与其他工具相比,其具有如下优点[10]:

1) Stanford parser 是一个比较完善的自然语言解析工具,综合了多个解析算法;

2) Stanford parser提供除英文之外的其他多种语言的语法解析功能,因此可比较方便地迁移到中文数据库系统中;

3) 它是斯坦福大学提供的免费开源软件,活跃度较高,版本更新快。

2.2 语义分析

语义分析是把句法分析得到的语法树转换成篇章表述结构DRS语义表达式。DRS语义表达式可以根据具体应用转换成其他的知识表示形式,比如一阶谓词逻辑(FOL)、描述逻辑(DL)等。在本系统中把DRS语义表达式转换成RDF三元组或SPARQL查询语句,然后传递给知识库处理模块进行训练或则查询处理。

2.2.1 定义DRS结构

DRS是对自然语言文集的语义表示。任何一个DRS由话语所指示集(discourse referents)和条件集(conditions)两部分组成。比如英语句子及其DRS:

A farmer chased a donkey.

[x,y:farmer(x),donkey(y),chased(x,y)]

可以看出这个DRS有2个个体:一个是farmer,另一个是donkey,且farmer 追赶(chased)donkey。这个DRS包含2个指示集x和y;包含3个条件集,分别是farmer(x)、donkey(y)和chased(x,y)。

DRS用一个扁平标注结构表示一个逻辑原子。比如对上面的例子,英语句子“A farmer chased a donkey.”其条件集farmer(x),donkey(y),chased(x,y)采用单词表示,如果采用这样的表示方法,在语义处理时会出现大量这样的谓词形式,不利于后续的处理任务。为了简化处理,本文采用ACE定义的DRS结构,对DRS的条件谓词进行限制,采用少量定义的谓词结构(比如class,object,property,predicate等)表示大量扁平结构的条件谓词。通过降低谓词的数量来降低后续处理的复杂度。上面句子的DRS表达式可表示为:

[x,y:object (x,farmer),object(y,donkey),predicate(x,chased,y)]

ACE DRS结构分两种类型,一种是基本类型,由基本的语义元素组成;另一种是复杂类型,是对基本类型的运算组合。本文参照ACE DRS类型定义出本文所需的DRS结构,具体类型定义如表1所示。

表1 DRS类型及表示结构

2.2.2 查询句子语义分析

自然语言句子通过规则引擎技术映射成DRS结构数据。其中,实义词映射成DRS的原子条件,功能词映射成DRS的逻辑连接词、DRS条件参数或共享变量。尽管自然语言句子比对应的DRS有更丰富的表达式,实验证明这样的映射是确实可行的。对名词、形容词、动词等结构遵循下面映射规则:

1) 名词映射成object条件:

(defrule PRE::pos_nn

(token (tid ?tid) (lemma ?lemma) (pos NNP|NNS|NN|NNPS|PRP) (sid ?sid) (index ?idx))

=>

(assert (object (tid ?tid) (lemma ?lemma) (pos N) (sid ?sid) (index ?idx)))

)

(defrule PRE::pos_dt_to_nn (declare (salience 2000))

?f1<-(token (tid ?dt) (pos DT) (sid ?sid) (index ?idx))

(td (type cop) (gov ?dt) (dep ?dp) (sid ?sid))

=>

(modify ?f1 (pos NN))

)

(defrule SENSE::class_nns (declare (salience 1000))

(token (tid ?noun) (lemma ?lemma) (pos NNS|NNPS))

(not (t (s ?noun) (p rule:class)))

??f<-(ner (tid ?noun) (ner ?ner))

(test (neq ?lemma ?ner))

(test (neq ?class DURATION))

=>

(modify ?f (class?lemma))

)

2) 识别名称对应的class:

(defrule PRE::pos_no_ner

(token (tid ?tid) (lemma ?lemma) (pos NN|NNS|NNP|NNPS|RB|J) (sid ?sid))

(not (class (tid ?tid) (ner ?ner)))

(test (and (neq ?lemma not) (neq ?lemma no)))

=>

(assert (class (tid ?tid) (sid ?sid)))

)

(defrule PRE::pos_no_ner_prp

(token (tid ?tid) (lemma ?lemma) (pos PRP|PRP$) (sid ?sid))

(not (class (tid ?tid) (ner ?ner)))

(test (and (neq ?lemma not) (neq ?lemma no)))

=>

(assert (class (tid ?tid) (sid ?sid)))

)

(defrule PRE::pos_no_clas_dt

(token (tid ?tid) (pos DT) (sid ?sid))

(not (ner (tid ?tid) (ner ?ner)))

(td (type nsubj|dobj) (gov ?vb) (dep ?tid))

(predicate(tid ?vb) (pos V) (sid ?sid))

=>

(assert (class (tid ?tid)(sid ?sid)))

)

3) 形容词映射成property 条件:

(defrule PRE::pos_jj

(token (tid ?tid) (lemma ?lemma) (pos JJ|JJR|JJS) (sid ?sid) (index ?idx))

=>

(assert (property (tid ?tid) (lemma ?lemma) (pos J) (sid ?sid) (index ?idx)))

)

4) 动词映射成predicate条件:(defrule PRE::pos_vb

(token (tid ?tid) (lemma ?lemma) (pos VB|VBD|VBG|VBN|VBP|VBZ) (sid ?sid) (index ?idx))

=>

(assert (predicate (tid ?tid) (lemma ?lemma) (pos V) (sid ?sid) (index ?idx)))

)

(defrule SENSE::vb_nsubj

(td (type nsubj) (gov ?vb) (dep ?subj) (sid ?sid))

(predicate (tid ?vb) (lemma ?lemma) (pos V))

(test (neq ?lemma be))

=>

(assert (t (s ?vb) (p rule:nsubj) (o ?subj) (sid ?sid)))

)

(defrule SENSE::vb_rcmod

(td (type rcmod) (gov ?noun) (dep ?vb) (sid ?sid))

(predicate (tid ?vb) (pos V))

(not (td (type nsubj) (gov ?vb) (dep ?which)))

(not (td (type nsubjpass) (gov ?vb)))

=>

(assert (t (s ?vb) (p rule:nsubj) (o ?noun) (sid ?sid)))

)

(defrule SENSE::vb_rcmod_nsubj_which

(td (type rcmod) (gov ?noun) (dep ?vb) (sid ?sid))

(td (type nsubj) (gov ?vb) (dep ?which))

(predicate (tid ?vb) (pos V))

(object(tid ?which) (lemma which))

=>

(assert (t (s ?vb) (p rule:nsubj) (o ?noun) (sid ?sid)))

)

(defrule SENSE::vb_passive_dobj

(td (type nsubjpass) (gov ?vb) (dep ?dobj) (sid ?sid))

(not (td (type dobj) (gov ?vb) (dep ?obj)))

=>

(assert (t (s ?vb) (p rule:dobj) (o ?dobj) (sid ?sid)))

)

比如英语句子“Every man is a human.”可以映射成下面的DRS:DRS([A]

object(A,man,man,PERSON,male,eq,1,na)

)

=>

DRS ([B,C]

class(B,human,na)

predicate(C,be,A,B)

)

3 知识库处理组件

接下来要做的是把包含了自然语言语句的信息的DRS按照RDF三元组或SPARQL语法规则进行转换,生成对应的语句,然后传递给OntMS进行处理,并得到结果。

从DRS到RDF三元组的转换比较简单,直接把DRS表述结构的元素转换成三元组形式。较为复杂的是把DRS表达式转换成SPARQL,本系统采用转换模板实现该功能。首先在转换模板中定义转换规则。然后将DRS表达式数据及语义信息直接映射到模板文件中的变量,从而产生对应的语句。转换过程的关键是选定模板以及定义在模板中的转换规则。现在有可能的模板技术有Xslt、Velocity、Freemarker等,本文采用Velocity。DRS表述语句到RDF三元组的映射规则比较简单,不在这里描述,以下给出的是根据DRS描述语言生成的SPARQ语句的Velocity模板定义:

PREFIX p2:

PREFIX source:

PREFIX rule:

# 映射DRS到SPARQL

select

# 查询字段

distinct ?domain ?graph ?text ?group ?T1 ?PID1 ?T2 ?PID2 ?T3 ?PID3

# 查询条件

where

{

{

?text source:belongTo ?domain.

Filter(?domain in (${app},${domain}))

}

?text rule:hasPart ?graph.

?text source:isString "false"^^.

?text source:sameAs ?group.

FILTER(NOT EXISTS { ?any source:hasQuestion ?group })

GRAPH ?graph

{

?T1 rule:isHeadword "true".

?T1 rule:dobj ?T2 .

}

#foreach(?${token} in ${tokens})

{

{

?${token} rule:sense2 ?T1sense.

Filter (?${token}sense in (

#foreach(${sense} in ${senseList})

${sense},

#end

).

OPTIONAL {?${token} rule:param ?PID1.}}

UNION { ?${token} rule:param ?PID1.

?${token} a ?${token}class.

Filter (?${token}class in (p2:VERB,p2:TERM)). }

}

#end

MINUS

{

#foreach(?${minusToken} in ${minusTokens})

{

?${minusToken} rule:lemma ?${minusToken}_lemma.

FILTER NOT EXISTS { ?${minusToken} rule:sense2 ${minusToken}.lemma. }

}

FILTER NOT EXISTS { ?${minusToken} rule:param ?PID3.?${minusToken} a p2:TERM. }

#end

}

#foreach(?${fileterToken} in ${fileterTokens})

FILTER NOT EXISTS {?${fileterToken} rule:aux rule:negative.}

#end

}

OntMS目前已经被广泛研究和使用,此处可以采用Apache的Jena项目的SDB数据库对本体知识库进行管理。Jena定义了操作RDF的是标准API,可以显著提高系统的可移植性。本文只返回SDB知识库查询的结果记录,并格式化成一个XML格式数据输出。

4 实验

本文提出了一种基于Ontology的智能问答系统模型及设计框架。利用StanfordParser语法解析工具对句子进行语法分析;通过规则引擎进行语义解析;采用DRS表述语言描述语义信息。RDF数据存储在SDB数据库中,通过SPARQL语句查询RDF数据库。

由于本文只是对简单句子进行处理,所以实验选择的数据时从TREC 提供的测试集中抽取82个简单句子进行训练和查询,分别采用将原句子变为被动语句、句子添加其他成分使其变得复杂、用同义词替换句子中的词、增加同义词库、特殊处理等方式进行实验,实验结果如图2所示。

图2 SQLServre Pubs数据库测试数据分析

实验结果证明此模型基本满足智能问答查询。在用原句子进行查询时,基本能够找到对应的答案,查询准确率达到92%。如果把查询语句变换成被动语句,查询准确率降低到79%。如果在查询句子中添加其他成分,使句子变得复杂,查询结果明显降低,为68%。如果再用同义词替换句子中的单词,查询准确率进一步降低到50%。可以通过定义同义词库解决同义词查询问题。造成查询失败的主要原因是Standford对句子的解析并非完全正确,如果对其生成的语法书进行有效的矫正,可以显著提高查询准确率。

显然,本文提出的模型只是基于Ontology知识库研究工作的初步结果。为了进一步提高这种模型和方法的可用性,还有一些难点需要解决,比如解决复杂句子的查询问题、根据上下文查询问题和带有表达式语句的复杂查询等问题。

[1] WOODS W A.Lunar rocks in natural English:explorations in natural language question answering[J].Linguistic Structures Processing,1977(5):521-569.

[2] GREEN B F,WOLF A K,CHOMSKY C,et al.BASEBALL:an automatic question answerer[C]//Proceedings of the Western Joint IRE-AIEE-ACM Computer Conference[M].New York:ACM,1961:219-224.

[3] 夏天,樊孝忠,刘林.ALICE 机理分析与应用研究[J].计算机应用,2003,23(9):1-5.

[4] MOLLA D,VICEDO J L.Question answering in restricted domains:an overview[J].Computational Linguistics,2007,33(1):41-61.

[5] QINGLIN G,MING Z.Question Answering Based on Perva-sive Agent Ontology and Semantic Web[J].Knowledge-Based Systems,2009,(22):443-448.

[6] MCGUINNESS D L,VAN H F.OWL web ontology language overview[J].W3C recommendation,2004,10(10):135-140.

[7] EIJCK J,KAMP H.Representing discourse in context[M].[S.l.]:The Hague Area:Centrum voor Wiskunde en Informatica,1996.

[8] THE STANDFORD NATURAL LANGUAGE PEOCESSING GROUP.The Stanford Parser:A statistical parser[EB/OL].[2017-03-26].http://nlp.stanford.edu/software/lex-parser.shtml.

[9] PRUD E,SEABORNE A.SPARQL query language for RDF[Z].2006.

[10]王缓缓,李虎,石永.基于语义 Web 的受控自然语言推理模型[J].计算机科学,2011,38(2):187-190.

(责任编辑 陈 艳)

Research of an Ontology-Based Intelligent Question-Answering System

WANG Huan-huan1, ZHANG Jing-can1, LI Hu2

(1.Collage of Computer and Information Technology, China Three Gorges University, Yichang 443002, China; 2.Institute of Pattern Recognition & Artificial Intelligence, Huazhong University of Science & Technology, Wuhan 430074, China)

This paper proposed an approach to creating an ontology-based intelligent question-answering system which allows end-users to train and query answer from an ontology database. Our approach integrates StanfordParser as the natural language parser. And we used rule engine as the natural language semantic interpreter. The user inputs will be first translated into a syntax tree by syntax analysis and parsing, and then it will be translated into an intermediate expression language DRS by the rule engine semantic interpreter. The template engine will transfers DRS expressions into RDF triple or Sparql sentence. We queried the answer by executing Sparql sentences. This paper presents the framework based on ontology techniques to implement portable AIQA that makes it easier to migrate from one domain to another. The prototype system and our experiments show that our approach has generated good results with excellent performance on common queries.

ontology; artificial intelligence question-answering system; type dependence; discourse representation structure; resource description frame; SPARQL

2017-01-16 基金项目:湖北省教育厅自然科学研究项目(Q20141212)

王缓缓(1978—),女,博士,副教授,主要从事信息管理与数据挖掘研究,E-mail:tinawang_053101@126.com。

王缓缓,张警灿,李虎.基于Ontology的智能问答系统的研究[J].重庆理工大学学报(自然科学),2017(5):111-118.

format:WANG Huan-huan, ZHANG Jing-can, LI Hu.Research of an Ontology-Based Intelligent Question-Answering System[J].Journal of Chongqing University of Technology(Natural Science),2017(5):111-118.

10.3969/j.issn.1674-8425(z).2017.05.019

TP311

A

1674-8425(2017)05-0111-08

猜你喜欢

三元组知识库语句
特征标三元组的本原诱导子
重点:语句衔接
关于余挠三元组的periodic-模
基于TRIZ与知识库的创新模型构建及在注塑机设计中的应用
一个时态RDF存储系统的设计与实现
高速公路信息系统维护知识库的建立和应用
基于Drupal发布学者知识库关联数据的研究
如何搞定语句衔接题
三元组辐射场的建模与仿真
位置与方向测试题