APP下载

基于知识图谱的海洋中药智能问答系统的设计与实现*

2023-11-07洪海蓝李文林杨涛李玥梅文静

世界科学技术-中医药现代化 2023年6期
关键词:主治图谱实体

洪海蓝,李文林,2**,杨涛,李玥,梅文静

(1.南京中医药大学人工智能与信息技术学院 南京 210023;2.江苏省中医外用药开发与应用工程研究中心 南京210023;3.南京中医药大学针灸推拿养生康复学院 南京 210023)

海洋中药是“蓝色药库”的重要组成部分,开展海洋中药研究对于完善中国海洋新药创新体系资源领域的战略布局,推动海洋生物医药产业的健康发展具有重要价值[1]。2019海洋药物甘露特钠的问世,填补了阿尔茨海默病17年无新药上市的空白,促使越来越多的研究者重视海洋中药的科学研究[1-2]。尽管我国有悠久的海洋中药应用历史,然而由于海洋中药知识过于专业,加之海洋中药的信息资源较为分散,导致许多研究者对海洋中药知识缺乏必要的了解,因此构建海洋中药的智能问答系统非常必要。

智能问答起源于20世纪50年代图灵测试,是自然语言处理中非常重要的研究内容[3],它能让计算机自动并以精准的自然语言形式回答用户所提出的问题且不同于搜索引擎[4]。2012年谷歌提出基于知识图谱的问答系统(Knowledge Graph Question Answer),为该领域的进一步拓展提供了重要的参考方向[5],目前中文医学领域已开展了类似的探索性研究。陈志豪[6]提出将Aho-Corasick和Word2Vec结合抽取实体,李贺等[7]沿用这个算法对疾病知识图谱的自动问答系统进行优化。乔凯等[8]提出基于知识图谱与关键词注意机制的中文医疗问答匹配方法。王继伟等[9]提出基于共享层的卷积神经网络(SH-CNN)与词频-逆文本频率(TF-IDF)的中文医疗知识图谱的智能问答系统。张兴等[10]提出了融合TF-IDF、BERT和DSSM的儿童疾病问答系统。上述中文医学领域的问答系统在构建方法与思路方面给本项目的研究提供了参考与借鉴。鉴于海洋中药领域尚未有可供应用的成果[11-12],本研究以前期构建的细粒度海洋中药知识图谱为知识库,按照问句分析、问题匹配、答案抽取等流程,从实际需求出发,开展了海洋中药智能问答系统(MMKGQA)的构建研究,以便为海洋中药信息的有效利用提供支撑。

1 海洋中药智能问答系统构建流程

MMKGQA系统分为3个模块:问句分析模块、问题匹配模块和答案检索模块,系统框架如图1所示。

图1 海洋中药智能问答系统框架

(1)问句分析模块的功能主要是用户输入问题,系统接收问题,问句分析对问题进行预处理,获取问句中用户意图和问句分类特征词。首先根据自定义的词典采用Aho-Corasick获取问句中的关键词,比如海洋中药实体、海洋中药功效实体、海洋中药主治实体。如果词典中不包含问句中的实体,调用分词工具jieba并载入自定义词典、进行分词、去除停用词、获取关键字、然后使用Word2Vec提前训练好的模型计算文本相似度来获取语义相似度最高的实体。

(2)问题匹配模块的功能主要是根据问句分析模块获得的关键词和特征词匹配问题类型和实体类型,确定问题模板,将获取的实体和问题类型传给答案抽取模块。

(3)答案抽取模块的功能主要是接受问题匹配模块传递过来的问题中的关键词实体并转换为Nebula Graph支持的nGQL查询语句,执行图数据库查询,将查询结果进行数据解析,通过系统设定的答案模板反馈用户问题答案。

2 关键技术

2.1 海洋中药知识图谱

海洋中药知识图谱是以《海洋本草》和《海洋药物与效方》等专著文献为数据源,按照知识获取、知识抽取、知识融合、知识存储等步骤构建的细粒度知识图谱。海洋中药知识图谱了涵盖文献来源、海洋中药方剂、海洋中药性味归经、海洋中药功效、海洋中药主治、海洋中药异名、海洋中药制法、海洋中药用法用量、海洋中药禁忌、方剂组成、方剂功效、方剂主治、营养成分、中药类型14类实体。海洋中药知识图谱是以海洋中药和方剂为核心,实体粒度精细到分子层面的知识图谱。海洋中药知识图谱一共有实体17 511个、关系28 710条。以海兔和海洋方剂海粉汤为例的海洋中药知识图谱局部结构如图2所示。

图2 海洋中药知识图谱(部分)

2.2 Aho-Corasick

多模式匹配是指在一个长的字符串string中一次性查找多个模式串P1, P2, …, Pq[13]。而Aho-Corasick是KMP算法向多模式串情形的扩展,是最经典的多模式匹配算法[14]。该算法1975年起源于贝尔实验室,具体指的是利用多个字符串构建一个树型的模式匹配自动机,把所有的字符串合并使其在同一个集合中,即先以多模式串(短字符串)为基础创建自动机[15-16]。然后对要匹配的长字符串进行一次遍历,就可以找到该字符串中存在的目标字符串。Aho-Corasick的时间复杂度为O(n),在自动机中无论长字符串中是否有目标子字符串,长字符串中的每个字符都需要输入到自动机中遍历一遍,而且在模式匹配的过程中仅需遍历一次,不需要回溯。Aho-Corasick需要用到三个函数:goto,failure和output。其中goto函数表示当前的匹配结束了,可以达到的下一个状态;failure函数表示当输入的字符匹配不到时便进入下一个算法;output函数表示输出匹配结果。

鉴于基于字典的传统的字符串暴力匹配算法有普遍的适用性,因此本研究依旧使用这个传统算法。Aho-Corasick的作用的主要体现为:与本系统的实体词典结合使用,根据实体词典对问题进行实体匹配和抽取,完成问题的关键词分类,为问答系统问题分类和正确回答提供帮助。如果字典中匹配不到实体,就采用语义相似度模型,获取问句中关键词相似度最高的实体,帮助系统回答问题。Aho-Corasick应用思路如下:①利用《海洋本草》和《海洋药物与效方》中的海洋中药名、主治、功效、性味归经、营养成分、方剂等实体词典构建基础自动机。②将问题作为长字符串输入到自动机中进行模式匹配。③输出匹配结果,判定目标字符的类型。

2.3 Word2Vec语义相似度计算

本研究的语义相似度计算主要是利用Word2Vec[12]算法。Word2Vec主要采用CBOW (Continuous Bagof-Words Model)和Skip-Gram(Continuous Skip-Gram Model)两种模型[17],如图3所示。这两种模型都是以Huffman树作为基础。Huffman树中非叶节点存储的中间向量的初始化值是零向量,叶节点对应的单词的词向量是随机初始化的[18]。CBOW的核心思想是通过上下文词预测中心词,Skip-gram则是通过中心词预测上下文词[19]。CBOW与Skip-gram模型都是采用三层神经网络,除了输出输入方式不同,训练过程完全一致。本研究采用Skip-gram模型,因此针对Skipgram模型进行说明。Skip-gram的第一层是输入层,输入一个词向量W(i),采用输入的词向量训练上下文的词向量;第二层是映射层,映射第一层的词向量上下文的词向量到输出层;第三层是输出层,输出W(i)的上下文词向量。Skip-gram网络结构的功能是通过给定的中心词,计算目标词上下文的词向量。

图3 Word2Vec的两种模型

本研究主要是利用Word2Vec算法计算问句中关键词实体的文本相似度,获取文本相似度最高的实体,提高系统的响应能力。本研究的文本语义相似度计算思路如下:①首先利用python对《海洋本草》和《海洋药物与效方》的功效和主治的语料进行预处理。②将处理好的语料利用Word2Vec模型进行训练,并保存训练好的词向量模型[20]。③jieba分词载入预定义的词典对问题进行分词。④根据哈尔滨工业大学的停用词表格,去除停用词。⑤将分词以后获得的实体利用预训练好的词向量模型获取文本相似度最高的实体。

3 海洋中药知识图谱的问答系统实现

3.1 问卷调研

为提高海洋中药智能问答系统的适用性,本研究发起了关于海洋中药基本认知的问卷调查,以了解人们对海洋中药的认识程度及从药物应用角度重点关注的主题。问卷从日常应用、科学研究等角度共设置了17个问题,回收有效答卷131份。从调查结果来看,超过50%的人不知道日常食用的海鲜具有一定的药用功效,很多人甚至将沙参、党参等植物药误认为是海洋中药,在一定程度上表明人们对海洋中药缺乏基本的医学认知。对答卷的进一步分析表明,人们感兴趣的内容集中在海洋中药的类别、营养成分、性味归经、功效、主治、配伍等方面,尤其对美容养颜、减肥、生发、壮阳、助眠等功效类问题比较感兴趣。这些调查结果为我们从用户需求角度设计预设问题答案提供了方向参考。

3.2 问句分析

3.2.1 获取问题关键词

用户交互模块获取问题,系统利用Aho-Corasick对问题进行关键词实体识别和关键词获取。首先根据自定义的词典构造字典树,然后根据字典树对问题进行字符串的多匹配模式迭代。如果能够迭代出实体,说明问题关键词在我们自定义的实体字典中。对问题的实体进行特征分类,判断该实体是属于具体的哪一类实体,如海洋中药属性、海洋中药主治、海洋中药功效、海洋中药方剂、海洋中药营养成分等。如果迭代的结果为空,则说明用户提问的关键词不在我们的词典内,此时需要对问题进行预处理——使用Word2Vec计算文本相似度,获取文本相似度最高的实体,然后对获取的实体进行分类。

3.2.2 用户问题预处理

当使用Aho-Corasick对问题无法获得关键词实体的时候,使用Word2Vec计算关键词的文本相似度,获取相似度最高的实体,提高系统的响应能力。本研究利用jieba分词工具载入自定义的词典对问题进行分词,以哈尔滨工业大学的停用词表为依据去除停用词。通过分词,去除停用词等流程将得到的关键词放入提前训练好的Word2Vec向量模型获取语义相似度最高的实体,然后对获取的实体进行分类。

3.2.3 问题分类

中文自动问答系统的问题分析包括分词、词性标注、句法分析、命名实体识别、关键词提取与扩展等操作,并在此基础上完成对问题的分类和语义分析等[17]。分析流程中,问题分类的准确性决定了系统输出结果的正确性。问题能否正确分类是系统正确回答问题的关键。本研究通过匹配问题特征词结合关键词实体类型进行问题分类。根据《海洋本草》、《海洋药物与效方》等文献数据对海洋中药的描述和海洋中药社会认知问卷调查了解到的情况,归纳总结人们提问频率最高的问题。本研究从专业角度出发提出一种细粒度中药问题分类方法,将用户问题分为以下6大类:判断类、功效类、成分类、属性类、主治类、方剂类。判断类、成分类和属性类,问题内容单一,比较简单,是认知性的问题。功效类、主治类、方剂类的问题类型比较复杂,是推理性的问题,需要进一步推理。比如“治疗冠心病的海洋中药有哪些?”和“治疗冠心病的海洋效方有哪些?”都是主治类的问题,都是以疾病实体进行查询。前者是利用疾病实体来查询中药实体,即以冠心病为实体查询海洋中药;后者不仅仅是主治类问题还是方剂类问题,该问题被判定为利用疾病实体来查询方剂实体,即以冠心病为实体查询海洋效方。而“海兔能够治疗哪些疾病?”是利用中药实体来查询疾病实体。所以主治类的问题还得进一步进行推理,将问题再一次划分为三小类。功效类的问题和主治类的问题类似。方剂类的问题更为复杂,需要进一步推理,不仅要结合功效类问题、主治类问题,还需要判断方剂的组成问题。如“海兔的海洋效方有哪些?”和“海粉汤的组成是哪些?”前者是以海洋中药实体查询效方,后者是以海洋效方实体查询海洋中药实体。因此,本研究提出了判断、功效、成分、属性、主治、方剂等6类问题作为海洋中药智能问答系统问题分类体系。

3.3 问题匹配

通过问卷调查搜集的海洋中药问答语料,对设计的问题类别分别随机选择若干条问题进行人工标注以获取该类别的特征词,问题类别分类特征词如表1所示。根据这些特征词与问题进行匹配,再结合Aho-Corasick获取的关键词实体类别匹配进行问题匹配,关键词实体类别主要分为功效类实体、属性类实体、海洋中药类实体、主治类实体、方剂类实体、成分类实体等。如果匹配成功,说明问题属于本研究设计的问题分类体系。然后将获取的实体传递到相对应的问题模板,生成对应的nGQL查询语句对海洋中药知识库进行检索。

表1 问题类别分类

3.4 答案抽取

本研究通过问句分析和信息检索等步骤,可以从问题中获取问题的关键词实体,判断实体类型和问题类型。对问题分类以后将问题中提取出的实体类别和具体的实体转换为{‘实体类型’:[实体],...}的字典格式[21]。这个字典实际上是问题的目的,获取字典中的实体,将实体转换为nGQL查询语句,向Nebula Graph查询,将查询结果通过系统设定的答案模板反馈用户问题答案。

例如,当用户提问“具有美容养颜作用的海洋中药有哪些?”,通过Aho-Corasick提取出用户提问实体“美容养颜”是功效类的实体,根据设定的问题分类体系可以知道问题是功效类问题,以功效实体来查询海洋中药实体。可以将用户的提问封装成{‘美容养颜’:[“功效”], ‘海洋中药’:}字典格式。该字典用nGQL语句可以表示为:MATCH (v)-[e1:Medicine_effect_temporary_edge]-(v1)-[e:prescription_effect_edge|Medicine_effect_edge]-(v3:effect{name:“美容养颜”})RETURN v。系统将查询的结果进行数据解析,根据答案模板返回答案。通过问句分析、问题匹配、答案抽取以上3个步骤,基本实现海洋中药智能问答系统的功能,将问题转变为本系统可以识别的查询语言,并在海洋中药知识图谱中查询,经过数据解析,根据答案框架,将答案返回给用户。

3.5 系统测评

系统性能评价是评价一个系统可行性和实用性的关键。本研究测试问答系统性能的环境为:Ubuntu20.0、Python3.8、Anaconda3等。为了验证本研究开发的基于知识图谱的海洋中药智能问答系统的可行性与实用性,本研究选用精确率(P)、召回率(R)及 F1值作为评价指标。具体公式如(1)所示,其中R1表示系统返回答案的全部数量,P1表示问答系统中返回正确答案的数量,T表示存在正确答案的问题数量。通过对问卷调查研究获取的问题语料进行数据清洗,根据问题细分类,每一类问题随机筛选其中30条进行实验,实验结果如表2所示。

表2 系统性能测试表

从表2可以看出,判断类、海洋效方的配伍类的问答效果最好,主治具体某种疾病的海洋中药和某种具体功效的海洋中药的效果比较差。系统的平均P值为97.93%、平均R值为83.41%,平均F1值为89.10%,说明系统能够很好地回答海洋中药的相关问题,具有较高的实用性和可行性。主治某种疾病和某种具体功效的问题回答各方面评价指标较低,主要原因在于海洋中药知识图谱的覆盖面不够广泛,中医术语、现代医学名词和用户提问的用语之间不能够很好转换。

4 总结与讨论

我国拥有悠久的海洋中药应用历史,但是海洋中医药相关资源信息较为分散,缺乏相关的海洋中药知识服务工具,无法快速获取海洋中药的相关知识,导致许多研究者对海洋中药资源缺乏了解。当前公众对海洋中药基本信息的了解远远不足。为解决上述问题,本研究基于前期构建的细粒度高质量海洋中药知识图谱,通过问句分析、问题匹配、答案抽取3个步骤,开发了基于知识图谱的海洋中药智能问答系统(MMKGQA)。MMKGQA没有特别复杂的算法,主要采用Aho-Corasick和Word2Vec计算语义相似度对用户问题进行实体匹配和抽取。根据本研究提出的问题分类体系进行分类,使用正确率对系统进行系统性能测评。测试分析表明,该系统可帮助普通用户准确了解海洋中药的基础知识,对中药研发人员而言,利用该系统可方便查询关于海洋中药的性味归经、功能主治、配伍应用等方面的专业知识,是一个高效的知识服务工具,为海洋中药的进一步开发利用提供支撑平台。目前,知识图谱是各个领域知识工程建设的重要工具,知识图谱在中医药领域应用前景广阔,本研究构建的基于知识图谱的海洋中药智能问答系统推动了知识图谱技术在中药领域的应用,为知识图谱技术在中医药知识的深度应用提供参考。

智能系统回答问题的准确率依赖于问题分类是否正确以及知识图谱的覆盖范围与知识内容的分类粒度。由于前期构建的海洋中药的种类仅限于与日常生活及中医临床应用相对较多的品种,知识图谱的主题分布也仅限于中药传统的性味归经、功效主治、方剂等内容,目前尚未将海洋中药化学成分、活性作用等方面的知识与上述海洋中药传统应用方面的知识予以融合贯通,因此,目前对于用户提出范围过于宽泛、笼统的问题,系统还不能给出具体的答案。比如用户提问“治疗病毒性感染性疾病的海洋中药有哪些?”这是一个主治类的问题,但问题涉及到海洋中药的具体药理作用,加之病毒性感染性的疾病谱非常广,具体是哪一个疾病,用户提问意图不明确,因此问答系统无法给出相对准确或明确的答案。对这类问题,目前本系统一律回复“不好意思,这个问题暂时超出了小蓝的思考范围,我将继续努力学习。”上述应用需求为我们从用户需求角度进一步扩展海洋中药智能问答系统的知识面,完善系统的推理功能指明了方向,让知识图谱技术更好地服务于中药领域,这是今后的重点研究方向。

猜你喜欢

主治图谱实体
绘一张成长图谱
前海自贸区:金融服务实体
佛医方剂的品种、主治和用药特点
实体的可感部分与实体——兼论亚里士多德分析实体的两种模式
补肾强身片UPLC指纹图谱
两会进行时:紧扣实体经济“钉钉子”
振兴实体经济地方如何“钉钉子”
主动对接你思维的知识图谱
从“肺主治节”论治COPD肺血管重构
主治医的中国梦