面向医学领域的智能问答APP设计与实现

2019-06-06 04:21黄梦禧张青川陈龙王世锦
软件导刊 2019年3期
关键词:模式匹配自然语言处理人工智能

黄梦禧 张青川 陈龙 王世锦

摘 要:随着医疗大数据时代的到来,自然语言处理技术在医学领域发展迅速,而问答系统能够准确、简洁地用自然语言回答用户提出的问题,因此其在医学领域的应用具有重要研究价值。基于自然语言处理技术、朴素贝叶斯分类算法、词向量、模糊匹配技术等,设计并实现了一款实用的面向医学领域的智能问答APP。通过对问题的检索,针对问题类型制定分类规则,并向用户返回检索结果;基于Bigram、词频、对齐文本的评估模型,可大大增加候选答案的正确率与简洁度;基于证据与候选答案的评分机制,可减少误报以及对结果的重复检索。

关键词:人工智能;自然语言处理;问答APP;模式匹配;贝叶斯分类

DOI:10. 11907/rjdk. 182109

中图分类号:TP319 文献标识码:A 文章编号:1672-7800(2019)003-0094-06

0 引言

随着计算机的普及,尤其是互联网的兴起,如今已进入信息化时代,因此对信息的有效处理成为人们迫切需求。面对大量用户群、几何式增长的网络数据及高质量的检索需求,性能良好的搜索引擎层出不穷,在一定程度上为用户在海量数据中的搜索提供了便利。然而,目前搜索引擎尚存在大量不足之处。首先,引擎返回的相关网页文档太多,且内容全而不精,用户需要花费大量时间浏览文档,因而不能快速发现有用信息[1];其次,用户需要以关键字或关键字组合的方式输入检索内容,搜索引擎仅停留在语言表层,并未深入语义,因此不能很好地改善搜索结果。

为了弥补传统搜索引擎的缺陷,智能问答系统应运而生。阿兰·麦熙生·图灵设计的图灵测试系统为最早的问答系统。传统问答系统研究领域较为局限,其依赖于人工智能技术,主要由两部分组成:人工编制的知识库与语言接口[2]。由于词汇量有限,且问题是一个封闭集合,基本不存在语言与语义歧义问题,相应合成的答案有规律可循。因此,早期的人工智能探索仅局限于实验室应用,而无法大量投入工业生产,也不具备实用价值。20世纪90年代,开放的基于文本的问答系统开始出现在人们视野中,以大规模真实语料库为基础的机器学习与统计研究开始取代传统搜索引擎。问答系统也成为学术界近年来的研究热点,并被列为自然语言研究的重要分支之一。

问答系统是一种能用简洁而准确的自然语言快速回答用户提问的智能化系统[3]。当用户需要检索信息时,只需用自然语言描述问题,输入问答系统中,系统经过问题分析、模式匹配与语义抽取等步骤,最终生成准确、简洁的答案。一个智能问答APP具有较强的问题分析能力是十分重要的,但现有问答APP尚不能完全实现人的智能。一方面,传统问答APP都是返回大段文本,而不能直接输出答案,或者只能采用简单的模式匹配技术生成答案;另一方面,目前证据评分算法以及候选答案估值技术已应用于智能问答APP中,但在答案准确性、适用性与及时性等方面仍不够完善。

面向医学领域的智能问答APP包括浅层语义分析、信息检索、候选答案提取与估值功能。其中,浅层语义分析使用分词+词性标注技术及依存句法分析技术[4],可提高分析准确性,解决问题语义歧义并对问题进行分类;信息检索采用信息预处理与信息索引技术,以从海量信息中筛选有用信息,降低信息噪音并且减少信息搜索时间,整理为最终的正确答案,同时可提高在本地知识库及网络中的检索速度与搜索精确度[5];候选答案提取与估值使用基于词距、词频与文本对齐的评价模型,整理搜索结果生成答案候选集,并评估候选答案质量,生成最佳答案返回给用户。

本文对面向医学领域的智能问答APP进行研究,基于医疗网站实际QA问答记录,面向广大用户群体推出一款实用的智能医疗问答软件。该系统能够准确理解自然语言提出的问题,并为用户返回准确、简洁的答案。

1 软件设计方案

本文设计一个面向医学领域的智能问答APP,根据APP的设计需求与设计目标,本文重点研究了问题分类、信息检索、候选答案提取3个模块的功能,以期提高问答APP的检索效率与效果。

1.1 软件需求与设计目标

该智能问答APP的处理速度应能适应手机硬件速度,响应时间一般不超过5s,并且严格区分数据处理权限,禁止越权处理数据。APP处理用户输入的问题,并将检索结果返回客户端。问答APP需求如图1所示。

用户需求如下:①根据APP端提供的问题示例,提出符合规则的问题;②用户可以查询历史纪录,亦可直接从搜索记录中找寻答案;③用户可以获取与答案有关的详细证据,追根究底,全面剖析问题。

APP功能如下:①获取用户数据并进行分析与管理,将其存入数据库,不定期地进行训练学习,返回用户關心的信息,不断提高APP的查全率与查准率;②处理用户请求,根据用户输入及时响应。响应速度是衡量APP的重要指标之一,考虑多种可用于优化性能的指标,及时触发对应事件;③定义APP可以处理的问题模式,并对APP进行训练,提高解答正确率,并丰富问题模式,完善APP功能,让用户与APP交流更加自然流畅;④在界面上为用户提供友好的交互手段。

设计目标为:①具有较强的实时性,能够及时将收集的信息与提取的候选答案返回用户;②能够筛除大量无用信息,提高APP搜索效率,节省存储空间;③在搜索更新及时且保证准确性的情况下占用较低的网络开销,大幅减少冗余数据;④APP资源占用率较小,尤其是将CPU占用率控制在1%以下。

1.2 重点问题与技术难点

1.2.1 重点问题

问答APP主要由3部分组成:语义理解、信息检索、答案生成[6]。3个主要模块功能的实现涉及两种核心技术:自然语言处理技术与信息检索技术。自然语言处理即解决用户用自然语言提出的问题。首先APP对用户进行浅层语义分析,利用分词技术识别其中关键词;然后通过词语相似度算法研究技术,将相似词提交给检索系统;APP提取关键词进行本地知识库与网络检索,生成答案候选集;最后通过语义结构比较与句子相似度算法研究,在相似度最大的框架抽取答案[7]。

1.2.2 技术难点

智能问答APP核心问题是其能否准确、快速地回答用户提出的问题,即APP能否正确理解用户提问,以及能否理解用户的错误输入,返回正确结果[8]。这涉及到知识库梳理、问题理解、问题检索3方面内容,并且考虑到汉字的复杂性及中文的独特性,需要攻克更多技术难题。英语直接采用空格分隔,疑问句和陈述句可以通过特殊与一般疑问词进行区分,但中文是用标点符号分隔,且词与词之间无空格,所以需要采用分词技术[9]进行中文语言处理。另外,由于缺乏公用语料库,问答APP仅局限于有限域。

2 智能问答APP设计

2.1 APP业务逻辑流程

智能问答APP主要由4部分组成:问题分类、证据获取、证据评分与候选答案评分[10]。APP业务逻辑流程如图2所示。

用户输入问题,APP获取问题后进行语言处理,包括分词和词性标注,以及判断词语间的依存语法关系。同时数据库检索本地缓存,查看是否存在相同问题,如果有,则返回问题证据及答案[11];若没有,则从互联网检索问题证据,并存入数据库。此时,APP已完成问题类型的确定,结合对证据的评分,提取候选答案。最后,候选答案模块对所有候选项进行评分,返回Top3内的答案及其置信度。

2.2 问题分类模块设计

问题分类模块利用预处理技术标记分词,再采用规定的3种分类模式,通过综合评价得出问题所属分类,并存储到MySQL数据库中。问题分类模块部署在阿里云服务器(Ubuntu)上,是APP的3个核心模块之一。问题分类模块需要考虑的问题包括:文本信息的全面性、准确性,以及尽量占用较少的APP资源与网络资源[12]。

该模块使用朴素贝叶斯分类器,层次分类思想主要选择词汇、词性、相关词、命名实体、中心语块等作为特征,将问题分成7大类:人物、病状、疾病名、药品、实体、定义、未知[13]。智能问答APP的问题分类采用模式匹配方法,具体分为3种:直接匹配模式(C1)、基于问题分词的词与词性匹配模式(C2)、基于问题主谓宾的词与词性匹配模式(C3)[14]。将所有问题与3类模式进行匹配并综合打分,选出分值最高的问题类型。

若用户输入问题不符合规定类型,则向APP返回匹配失败指令,再进行类型强制转换,再次对转换后的问题进行模式匹配。该模块功能设计如图3所示。

语言预处理质量将影响问题分类结果。中文语言处理程序复杂,且问题分类不够细致,仅定义了7个大类,对于不符合中文规范或超出APP定义的问题类型,则无法得到理想结果。目前APP处理效果较好的问题类型包括人物、病症、疾病名、药品4大类[15]。

2.3 证据收集模块

传统问答APP仅使用本地数据库缓存的内容向用户提供证据文本,该模式存在很多问题:一方面本地缓存数量有限,无法满足用户多方面需求;另一方面,由于大多数候选答案使用模式匹配算法,有限的语料库导致候选答案有迹可循,或产生一些让用户啼笑皆非的无意义答案。因此,本APP使用数据库与搜索引擎相结合的证据收集方式,不仅提高了检索效率,丰富了本地语料库,而且抽取了更多证据文本,丰富了候选答案层次。综上所述,该模块设计能够满足APP对效率、精确度、时效性3方面要求。

证据收集模块主要功能为:证据检索与证据评分。当用户提出一个问题,首先检索本地数据库是否存在相同问题,有则返回数据库里存储的问题答案与证据;否则,根据分词模块处理得出的关键字组合,利用网络检索相关文本信息。APP通过证据评分模型评判证据对问题的支持度,然后按照分数从高到低的顺序传递给候选答案提取模块。

2.4 候选答案提取模块

答案提取模块主要评价候选答案可信度,通过抽取函数提取证据中的有效关键词,再利用候选答案评分模型计算每个候选答案分值,只留下排名前三的候选答案,最后传递给用户展示界面。

提取函数提取的关键字即为可能的答案,表1给出一些提取函数寻找的目标样例(p是文本,ψ是中心词,f是提取函数)。

提取多个候选答案后,由于中文语言处理技术不够完善,关键词里夹杂着无关文本,致使候选答案质量参差不齐,因此需要对所有候选答案进行评分。本APP共使用7种候选答案评分模型,然后根据问题分类及证据分词结果选择一种评分模型,并随机为其赋予一个值(一般为1),或者使用综合评分模型执行简单的线性加权得出最终得分,最后按从高到低的顺序得出其置信度。

2.5 用户界面设计

用户界面部署在用户接口层,即客户端。该智能问答APP有兩个主界面:APP首页与人机问答界面。该APP遵循用户界面设计的3大原则:①置界面于用户控制之下;②减少用户记忆负担;③保持界面一致性。此外,为了让页面更加美观,功能更丰富,摒弃了传统页面编写方法,而使用MUI框架,使用户体验更好,且人机交互性良好。

3 智能问答APP实现

3.1 程序开发

开发语言为:Java、JS、JavaScript。

开发环境为:Hbuilder、Myeclipse、MySQL、Maven 3.3.3,JDK1.8,Tomcat8.0。

程序结构如图5所示。

3.1.1 问题分类模块

问题分类模块定义了问题结构、类型与枚举方式。APP对问题进行分词与词性标注后[16],共定义了4种问题类型:人物、病症、疾病名、药品。在问题类型枚举程序中增加了新的问题类型,并在词性与问题类型之间作映射。然后在资源目录中增加新的模式匹配规则,以支持对新问题类型的判定。APP定义 3 个文件代表不同抽象层级的模式,只需在其中一个文件中增加新模式即可。在问题类型转换类中将模式匹配规则映射为枚举类,系统从控制台获取问题,进行语料处理后(分词与词性标记)开始对问题进行分类。问题分类代码结构如表2所示。

本问答APP使用朴素贝叶斯分类器进行问题分类,使用一个简单的流程图介绍该算法(x是待分类项,y是类别,i是类别序列),如图6所示。

对于给定的待分类项,求解在此项条件下各类别发生的概率,以及此待分类项属于最大概率值所对应的类别。确定最佳问题分类后,依据关键词进行证据检索。

3.1.2 证据收集模块

证据收集模块首先定义证据结构title和snippst,再对收集到的证据文本进行分词,最后对同一问题,不同证据的重要性不同,所以证据有不同分值,且有多个候选答案。

根据该模块设计理念,APP设置文件与百度搜索引擎两种方式检索证据。APP首先从本地数据库查询已有问题及答案,然后利用百度搜索引擎从网上獲取问题证据,收集大量文本证据后,对其进行评分,最后根据分词结果,选择最适合的证据评分模型,得出证据最终得分。

本APP共使用4种评分模型,考虑到检索效率,不是将4种模型评分后选择评价度最高的模型,而是根据问题结构选择一种模型进行评分,再随机赋予该模型权重。APP将证据评分乘以其指定模型权重,即为证据最终得分。APP过滤得分较低的证据,只留下分值较高的证据文本。

3.1.3 候选答案提取模块

首先从证据文本中提取候选答案,再通过候选答案过滤组件,过滤候选答案出现在问题中的文本,然后选择候选答案评估模型与权重,最后得出候选答案最终分值[17]。综合考虑算法实现难易程度以及对准确率的要求,本APP使用模式匹配算法抽取候选答案[18]。采用一个简单的流程图介绍该算法,如图7所示。

每一份证据文本都可提取一个候选答案,但不是所有答案都符合条件。因此,使用7种评分模型,根据候选答案结构选出最适合的评分模型,并随机赋予权重。将候选答案分值乘以对应模型权重即为候选答案最终得分[19],APP只留下分值排名靠前的答案并输出。

3.2 问答APP功能展示

3.2.1 展示内容

展示指标一:提供Web控制端的客户端管理方式,整个Web端对APP资源占用率较低。不断更新数据库,对APP进行问答训练,针对APP指定的问题模式,提高问题回答的准确率与时效性。需要提供以下完整功能:①对用户触发规则的行为给予文字反馈;②用户输入问题;③用户获取答案。

展示指标二:应用本文的数据过滤算法后,能够在保证数据准确性的前提下减少对多余数据的采集,从而避免产生过多冗余数据,减少网络开销。

展示指标三:采用本文的信息过滤机制后,可适应用户需求,大幅减少重复答案的产生,从而提高APP适用性。

3.2.2 功能展示

问答APP支持文本和语音输入。文本输入和语音输入方式分别如图8、图9所示。

问答APP对用户输入进行识别处理,并快速应答。应答界面如图10所示。

APP通过配置文件与映射文件将JAVA对象或持久化对象(Persistent Object,PO)映射到数据库中,然后通过对持久化对象的操作实现对数据的增加、查询等操作[20]。若用户输入本地缓存中的问题,则APP查询数据库,直接找寻答案和证据;若用户随机输入问题,则APP会同时使用数据库与网络搜索引擎进行查询,并返回结果,之后再将该问题存入数据库,更新question与evidence表格中的内容。

3.3 问答APP测试

测试本APP时,使用postman作为测试工具,发出GET类型请求命令,导入存储了100个参数值的测试文件,对APP的开放接口进行并发批量测试,设置迭代次数为100次,以测试问答APP的应答性能。

3.3.1 性能测试

具体测试命令为:{{baseURL}}/Alice2/QA?q={{q}},其中{{baseURL}}全局变量表示发送HTTP请求的URL,{{q}}表示请求参数。测试结果如表3所示。

以上测试结果显示,在设置时延为10ms的情况下,平均事务响应时间为2.73s,可满足APP的性能要求。

3.3.2 准确率测试

本软件的训练数据集是医疗问答网站上用户与医生的真实对话。测试的数据输入是用户用自然语言表达的问题,输出数据为软件的回答。测试了100条问答数据,由专业医生对输出结果进行评估[21],评估标准为:A:准确;B:基本准确,但有不合理的地方;C:不准确,根据实际情况选择对应字母。最终评估结果统计如图11所示。

测试及评估结果显示,问答APP的准确率可达到61%,表明问答APP对症状具有较好的推断能力,能够根据问诊查询输出较为准确的应答,具有较强的实用性。另外,在测试中发现,在医疗网站中问答次数较少的,例如一些疑难杂症,问答APP对其认识则不够充分,但该问题在数据量增大之后会得到一定程度改善。因此,有必要收集更多数据作进一步训练。

4 结语

随着人工智能的迅速发展,对智能问答APP的要求也越来越高。本文在总结当前人工智能与自然语言处理发展现状的基础上,对智能问答APP进行了深入研究,以提高其准确性、及时性与适用性。

本文主要研究工作和结论有以下几个方面:

(1)本文设计并实现了一个面向医学领域的智能问答APP,该APP分为后台与客户端两部分,后台为业务逻辑层与数据访问层,客户端为用户接口层与展示层。通过后台对数据进行处理,在客户端输出数据,并支持用户自定义回答模式,适应性强。智能问答APP还可以更改阈值,定制输出信息的长度与深度,其简单易实现,能减少重复答案的产生,且准确率高。

(2)本文采用Get/Post相结合的数据传输方式将采集到的数据从后台传输到软件端,该数据传输方式有较强的及时性,可大大缩短数据传输时间。

(3)本文设计的APP基于模式匹配算法输出答案,在不遗漏数据且不降低准确性的前提下过滤长度不合适的答案,从而降低了网络开销,减少冗余数据产生。

目前APP还存在以下待改进之处:①本文设计的APP采用分词与词性标注技术对问题进行预处理,语义处理能力较差,因此未来APP可以对问题增加浅层语义分析,以提高APP对问题的理解能力,能够识别同一语义的不同提问模式;②该APP基于模式匹配算法提取答案,虽提高了答案匹配速度,但在答案准确性和层次复杂度等方面略有欠缺,可使用卷积神经网络算法、遗传退火算法等提高候选答案模块提取的效率与精度,丰富答案类型与层次。

参考文献:

[1] 毛先领,李晓明. 问答系统研究综述[J]. 计算机科学与探索,2012,6(3):193-207.

[2] 王树西. 问答系统:核心技术、发展趋势[J]. 计算机工程与应用,2005(18):1-3.

[3] 刘芳,于斐. 面向医疗行业的智能问答系统研究与实现[J]. 微电子学与计算机,2012,29(11):95-98.

[4] 汪红林. 基于依存分析的语义角色标注研究[D]. 苏州:苏州大学,2009.

[5] 刘毅. 人工智能的历史与未来[J]. 科技管理研究,2004(6):121-124.

[6] 刘件,魏程. 中文分词算法研究[J]. 微计算机应用,2008(8):11-16.

[7] 黄妮. 网络学习平台中的分词与句子相似度算法研究[D]. 西安:陕西师范大学, 2012.

[8] 邢超. 智能问答系统的设计与实现[D]. 北京:北京交通大学,2015.

[9] 赵凡博. 浅析中文分词技术及其方法[J]. 世界家苑,2011(12):228.

[10] 徐灿,王东辉. 非结构化文档的开放域自动问答系统技术研究[D]. 杭州:浙江大学,2017.

[11] 莫洪武. 分布式多級缓存技术在选课系统中的应用[J]. 广西教育,2014(7):183-185.

[12] 刘勇. 体育市场调查与分析[M]. 北京:高等教育出版社,2004.

[13] 段利国. 开放域中文问答系统关键技术研究[D]. 太原:太原理工大学, 2011.

[14] BARSKAR R, AHMED G F, BARSKAR N. An approach for extracting exact answers to question answering (QA) system for English sentences[J]. Procedia Engineering, 2012, 30:1187-1194.

[15] LAPSHIN V A. Question-answering systems: development and prospects[J].Automatic Documentation & Mathematical Linguistics, 2012,46(3):138-145.

[16] 罗熹. 基于评论信息的内容感知方法研究[D]. 成都:电子科技大学,2015.

[17] 李桂兰,余正涛,毛存礼,等. 旅游领域实体答案的抽取[J]. 广西师范大学学报:自然科学版, 2009, 27(1):181-184.

[18] 蔡恒,张帅. 基于BF算法改进的字符串模式匹配算法[J]. 电脑编程技巧与维护,2014(22):14-15,33.

[19] 常毅. 开放领域的问答系统研究[D]. 北京:中国科学院研究生院(计算技术研究所),2004.

[20] 肖辉辉,段艳明,兰小机. 基于Hibernate的XML数据存储方法[J]. 计算机系统应用,2009,18(10):189-192,163.

[21] 李超. 智能疾病导诊及医疗问答方法研究与应用[D]. 大连:大连理工大学,2016.

(责任编辑:黄 健)

猜你喜欢
模式匹配自然语言处理人工智能
基于模式匹配的计算机网络入侵防御系统
具有间隙约束的模式匹配的研究进展
OIP-IOS运作与定价模式匹配的因素、机理、机制问题
人工智能与就业
基于组合分类算法的源代码注释质量评估方法
基于散列函数的模式匹配算法