论文部分内容阅读
近年来,随着Web技术的发展,开发能够满足用户对不相关信息的快速访问服务成为了一种重要应用。问答服务就是这样一种服务,其目标是面向某个具体问题提供答案。在过去的十年中,受TREC(文本检索会议)的自动问答论坛影响,开发了许多自动问答系统。自动问答技术涉及到很多NLP(自然语言处理技术),如彳自息检索(IR),fe息抽取(IE),自动摘要,会话界面等。目則的自动问答系统可以分为两类:开放域自动问答系统和受限域自动问答系统。开放域自动问答系统面向几乎所有问题的解答,主要依靠通用本体和知识库技术。同时,在开放域问答系统中问题的类型是不固定的。受限域自动问答系统主要处理特定领域的问题(如生物医药或天气预报),由于自然语言处理中可以经常利用领域知识构建本体,从而受限域自动问答系统相对简单。同时,在受限域自动问答系统中所接受的问题类型也是有限的。本文的目标是设计并实现SieQA自动问答系统,该系统为一个面向东北大学国际交流学院的受限域自动问答系统。为此,本文首先研究了自动问答系统的一般处理过程:首先,分析自然语言问题,给出关键字以及问题域;然后,使用关键字和问题域,对问题进行分类;接下来,根据问题分类,缩减相似的候选问题数量;然后,计算问题与候选问题间的相似度;最后,根据相似度得到问题答案,如果没有找到问题答案则记录该问题,并将该问题转给人工解决。这样,该过程中,需要解决以下问题:(1)问题分析,通过识别问题中的单词并标注语义,以对问题进行分类以理解问题目标;(2)问题选择,通过相似度计算,在大量的候选问题中选择合适的问题及答案,以实现自动问题解答。在问题分析中,其关键是要理解问题目标。为了识别问题目标,需要进行形态句法分析,以识别单词是动词、名词或者形容词等,并对单词进行标注。通过形态句法分析,将帮助确定问题关注于哪类事务。在此基础上,为了识别问题所关注的对象,还需要识别问题的语义以确定该问题是哪类问题。问题分类是要将问题归为几个语义类别。这些分类是事先定义的,依赖于问题关键字进行判断,比如when关注于时间或者日期,where关注于地点,who关注于人。利润,如果问题是“隔owos/1/祀,该问题将期待一个人名的答案。事实上,所有的问答系统都有一个问题分类模块。问题分类的准确性对于自动问答系统的性能是非常重要的。然而,对于一些英语单词,如which,并没有过多的带有其他语义类型信息。这样,就需要进一步分析识别问题关键字。这样,本文构建了一个问题类型表,它是一个层次结构。根据问题类型列表,可以得到如下的问题分类算法:(1)question is segmented into list(split on white space)(2)pattern matching-see if questions match patterns:a.If first word in sentence is what;i.If last word in sentence is about,mean,called,name:CLASS=DEFINITIONii.Else if second word is a modal verb:CLASS=DESCRIPTIONiii.Else if second last word in sentence is stand,stood:CLASS=DEFINITIONiv.Else if sentence contains price,cost,fee:CLASS-QUANTIFICATIONv.Else CLASS=OTHERb.Else If first word in sentence is who or whom:CLASS=PERSONc.Else If first word in sentence is where:CLASS=LOCATIONd.Else If first word in sentence is why:CLASS=REASONe.Else If first word in sentence is when:CLASS=DATEf.Else If first word in sentence is how:i.If second word is much or many:CLASS=QUANTIFICATIONii.Else If second word is long:CLASS=DATEiii.Else If second word is a modal verb;CLASS=DESCRIPTIONiv.Else CLAS SMOTHERg.Else If first word in sentence is which:CLASS=OBJECT问题选择是要在大量的候选问题中选择合适的问题及答案。这样就需要度量两个问题语句的相似度。该相似度计算应考虑语法和语义相似两个方面。语句间相似性度量步骤如下:(1)标记化,将句子分为一系列单词;(2)执行词性标注,对单词进行名动词识别,利用Brill标记算法进行基于规则的标注;(3)词义消歧,有些单词有多个语义,利用WSD(Word Sense Disambiguation)來消除歧义;(4)词义相似性度量,根据wordnet,利用路径长度,如公式(?)所示,计算词义相似性。其中si和s2表示源和目的词,depth表示计算节点到根距离的函数。LCS表示si和s2间最小相同部分。例如,对于两个词sl=“student”和s2=“person”。词si的路径T1为:[1]#Root<entity<physical entity<causal agent<person<enrollee<student[2]#Root<entity<physical entity<objet<whole<living<thing<organism<person<enrollee<student词s2的路径T2为:[1]#Root<entity<physical entity<causal agent<person[2]#Root<entity<physical entity<objet<whole<living<thing<organism<personLowest Common Subsumer(s)=argmax(depth(subsumer(Tl,T2)))={subsumer(Tl[l],T2[l])s subsumer(Tl[l],T2[2]),subsumer(Tl[2],T2[l]),subsumer(Tl[2],T2[2])}={person}DepthLCS=depth(“person”)=8Depth(sl)=min(depth({tree in T1|tree contains LCS}))=10Depth(s2)=min(depth({tree in T2|tree contains LCS}))=8WUP(sl,s2)=2*DepthLCS/(Depth(sl)+Depth(s2))=2*8/(10+8)=0.8888888(5)语义相似度矩阵构建,语义相似度矩阵中每个表示X的位置为i的词与Y的位置为j的词之间的相似度。(6)语句相似度计算。根据句子间的语义相似矩阵,利用Dice相关系数计算得到两个句子的语义相似度,如公式(?)所示。这样根据以上描述两个语句X和Y的相似性计算算法如下:Sum=0;Threshold=0.5;for(int i=0;i<|X|;i++){max=-1;for(intj=0;j<丨Y|;j++){if(R[i,j]>max),max=R[i,j];}If(max>=Threshold){Sum max;}}Sim=2*Sum/(|X|+|Y|);在此基础上,本文描述了自动问答系统的功能分析。自动问答系统由两部分构成:客户App和管理端Web应用。客户App的功能是要提供一个界面以使得用户能够提问、获取答案并浏览提问历史记录。客户App可以分为以下功能模块:(1)注册模块:主要是提供新用户的注册;(2)登录模块:主要是使得用户能够提供用户名和密码之后登录系统;(3)个人资料设置模块:主要是使得用户可以修改个人资料信息;(4)提问模块,在用户登录该系统之后,可以提问;(5)浏览历史记录模块:用户可以浏览历史提问信息。管理端Web应用主要是提供管理员编辑问题类别、管理问题以及回答未正确处理问题和用户提问历史统计分析等功能。管理端Web可以分为以下功能模块:(1)登录模块:主要是使得用户能够提供用户名和密码之后登录系统,?(2)个人资料设置模块:主要是使得用户可以修改个人资料信息;’(3)用户管理模块:主要对注册用户进行权限管理及用户信息维护等;(4)问题域管理模块:主要是使得用户能够修改编辑问题域;(5)问题管理模块:主要是使得用户能够修改编辑删除问题;(6)未正确处理问题解答模块:主要是使得用户能够对系统未正确处理问题提供解答。(7)查看统计信息模块:主要是使得用户能够查看问题回答情况。在系统分析的基础上,本文描述了系统的体系结构设计和逻辑结构设计,并给出了关键功能模块设计和数据库设计。其中客户APP包括3层:显示层、交互层和服务器层。其中,显示层是android聊天应用,用于以图形界面方式提供系统登录、提问、获取答案以及浏览历史问答记录等功能。交互层主要负责通过socket端口接收和发送消息。服务器层为远程服务器,用以与显示层间发送接收消息。营理纟而Web应用米用显7F层、Web应用层和数据层的3层体系结构。其中,显示层是通过不同的Web界面提供用户登录、问题域管理、用户角色管理和未解答问题角色指派等功能。同时,它也提供系统统计功能。该层同时也提供用户请求的处理、问题自动响应以及失败情况下的通知发送功能。Web应用层由Wicket,spring,hibernate和JPA技术幵发=数据层主要存储系统中的数据,如用户信息、问题信息和角色权限信息等。为了支持系统功能,通过实体类分析和数据库表关系分析,本系统主要构建了14张数据库表,包括:用户信息表、角色表、用户角色表、权限表、角色权限表、问题域表、问题子域表、问题表、答案表、问题类别表、用户问题表、用户答案表、未回答问题表。在系统设计的基础上,给出了本文的关键功能模块实现,详细说明了系统开发环境,并讨论了问题分析、分类以及相似度计算的实现原理和代码。同时,给出了客户App的提问和登录模块的实现原理及界面,给出了管理端Web应用的登录、查看统计信息和问题管理模块的实现原理及界面。本文开展了一系列的实验对答案获取进行了测试。实验结果验证了其准确性。同时,对系统中关键功能模块进行了系统测试。测试结果表明,该系统能够帮助东北大学国际交流学院实现留学相关问题的自动解答。最后,本文总结了论文的主要工作。本文主要设计并实现了一个自动问答系统。该系统中利用语句分析、分类和相似度计算技术,从数据库(包括问题和答案的数据库)中获取答案。论文中给出了受限域自动问答方法的整体结构和处理过程。基于自动问答方法以及国际交流学院的业务需求,本文给出了系统的功能性和非功能性需求分析,描述了系统的体系结构设计和逻辑结构设计,并给出了关键功能模块设计和数据库设计。并基于系统设计,完成了系统功能模块的开发,并对关键功能模块进行了测试。但是,本文也还存在一些不足。下一步将在自动问答中引入用户满意度评价,以提高问题自动解答的准确性;同时,在问题分析中将利用SVM技术提高问题分析的准确率。