本发明涉及知识图谱技术领域,具体涉及一种多模态数据融合的医疗知识图谱智能自动构建系统和方法。
背景技术:
知识图谱是利用可视化技术或结构化方式来描述实体和实体关系知识,为搜索引擎用户提供高质量的知识检索服务。其目的是为了提高搜索引擎的能力,提高搜索结果质量并提升用户的搜索体验。随着智能信息服务和应用的不断发展,知识图谱已在学术界和工业界普及,并在智能搜索、智慧问答、推荐系统等应用中发挥着重要的作用。
然而,本申请的发明人发现,通过现有的方法构建的医疗知识图谱不能准确的描述医疗数据。
技术实现要素:
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种多模态数据融合的医疗知识图谱智能自动构建系统和方法,解决了现有的方法构建的医疗知识图谱不能准确的描述医疗数据技术问题。
(二)技术方案
为实现以上目的,本发明通过以下技术方案予以实现:
本发明提供一种多模态数据融合的医疗知识图谱智能自动构建系统,包括:
数据获取及定义模块,用于获取语料数据,并定义所述语料数据中实体属性的类别;
预处理模块,用于对所述语料数据进行预处理;
数据抽取模块,用于对预处理后的语料数据进行知识抽取,构建<实体,属性,属性值>三元组数据,得到语料数据集;
知识扩充模块,用于对语料数据集采用混合式方法进行实体属性扩充;
融合模块,用于对扩充后的语料数据集中的不同类别的实体属性按不同的方式进行实体属性值融合;
权重计算模块,用于计算实体属性值融合后的语料数据集中的各个病症属性的权重;
实体约束及存储模块,用于对<实体,属性,属性值>三元组数据中的实体设置约束条件,将<实体,属性,属性值>三元组数据、约束条件和各个病症属性的权重存储到neo4j图数据库中。
优选的,所述实体属性的类别包括:多值属性、固定型单值属性和非固定型单值属性。
优选的,所述对预处理后的语料数据进行知识抽取,构建<实体,属性,属性值>三元组数据,得到语料数据集,包括:
若所述语料数据的类型为结构化数据,则从中抽取属性名称和属性值,依据属性名称和属性值构建<实体,属性,属性值>三元组数据,将其作为语料数据集;
若所述语料数据为非结构化数据或半结构化数据,则对其进行知识抽取,所述知识抽取包括命名实体识别、实体属性抽取;其中属性抽取是指对属性和属性值对的抽取;采用bilstm-crf深度学习模型进行医疗实体抽取;采用基于规则的方法抽取半结构化数据中的属性、采用构建包装器的方法自动从相应网站中抽取属性,将抽取的内容转化为<实体,属性,属性值>三元组数据,作为语料数据集。
优选的,所述对预处理后的语料数据进行知识抽取,构建<实体,属性,属性值>三元组数据,得到语料数据集,还包括:
若所述语料数据为半结构化数据时,基于所述语料数据构建知识抽取模板;利用所述知识抽取模板从语料数据中抽取属性名称和属性值,构建<实体,属性,属性值>三元组数据,作为语料数据集;
若所述语料数据为非结构化数据时,将所述语料数据转化为句子集合;依据预设词表对所述句子集合中的每一句子进行命名实体识别;依据命名实体识别后的句子集合构建知识抽取模板;利用知识抽取模板从所述语料数据中抽取属性名称和属性值,构建<实体,属性,属性值>三元组数据,作为语料数据集,并将抽取的属性名称和属性值添加至预设词表。
优选的,所述对语料数据集采用混合式方法进行实体属性扩充,包括:
基于模式匹配的方法对语料数据集进行实体属性知识扩充、基于属性词汇场的方法对语料数据集进行实体属性知识扩充、基于监督学习的方法对语料数据集进行实体属性知识扩充和基于搜索引擎问答的方法对语料数据集进行实体属性知识扩充。
优选的,所述融合模块对扩充后的语料数据集中的不同类别的实体属性按不同的方式进行实体属性值融合,包括:
当实体属性为多值属性时:
a=p1×s+p2×e
其中:
a表示候选属性值的可信度;
e表示该属性值被抽取过的次数;
p1、p2为预先设置的自定义参数,可以表示s、e各项在可信度中所占的权重;
当实体属性为固定型单值属性时:
使用基于可信度计算的方式来衡量属性值的准确性,并将可信度最高的候选属性值取出作为该属性的属性值;
对结构化或半结构化数据源的可信度公式如下:
a=p1×s+p2×e+p3×l+p4×w
a表示可信度;
l表示候选属性值的长度;
w表示该候选属性值在词汇场中的权重;
p1至p4为预先设置的自定义参数,表示s、e、l、w各项在可信度中所占的权重;
对从非结构化数据源中通过机器学习所得的知识的属性值可信度公式如下:
a=q1×r+q2×l
r表示该候选属性值数目占总数目的比值;
q1、q2为预先设置的自定义参数,表示r、l各项在可信度中所占的权重;
实体属性为非固定型单值属性时:
采用基于主动排序学习的非固定型单值属性的属性值融合,具体包括:
step1:构建训练集;
step2:调用主动排序学习算法对训练集进行训练,构建排序学习模型h(x);
其中,主动排序学习算法包括:
输入:已标注训练样本集l,未标注训练样本集u,每次迭代过程中交由人工标注的样本个数t,结束条件;
输出:h(x)=minr∈{1,2,...,k}{r:w.x-br<0};其中:w为排序学习模型对输入样本x每一维特征赋予的权重向量,br为一组阈值;
step4:取排序分值最高的候选四元组作为属性值融合的结果进行输出。
优选的,所述计算实体属性值融合后的语料数据集中的各个病症属性的权重,包括:
采用一种基于贝叶斯建模的方法计算病症属性的权重,具体为:
i=log(p(xi=1|yj=1))-log(p(xi=1|yj=0))
其中:i表示单个病症对于疾病的影响因子;
xi表示id为i的病症属性;
yj表示id为j的疾病实体;
p(xi=1|yj=1)表示某个病人患有疾病id为j的疾病的情况下有症状id为i的症状的概率;
p(xi=1|yj=0)表示未患有疾病id为j的情况下具有症状id为i的症状的概率。
本发明还提供一种多模态数据融合的医疗知识图谱智能自动构建方法,所述方法包括:
s1、获取语料数据集,并定义所述语料数据中实体属性的类别;
s2、对所述语料数据进行预处理;
s3、对预处理后的语料数据进行知识抽取,构建<实体,属性,属性值>三元组数据,得到语料数据集;
s4、对语料数据集采用混合式方法进行实体属性扩充;
s5、对扩充后的语料数据集中的不同类别的实体属性按不同的方式进行实体属性值融合;
s6、计算实体属性值融合后的语料数据集中的各个病症属性的权重;
s7、对<实体,属性,属性值>三元组数据中的实体设置约束条件,将<实体,属性,属性值>三元组数据、约束条件和各个病症属性的权重存储到neo4j图数据库中。
(三)有益效果
本发明提供了一种多模态数据融合的医疗知识图谱智能自动构建系统和方法。与现有技术相比,具备以下有益效果:
本发明通过获取语料数据集,并定义所述语料数据中实体属性的类别;对语料数据进行预处理;对预处理后的语料数据进行知识抽取,构建<实体,属性,属性值>三元组数据,得到语料数据集;对语料数据集采用混合式方法进行实体属性扩充;对扩充后的语料数据集中的不同类别的实体属性按不同的方式进行实体属性值融合;计算实体属性值融合后的语料数据集中的各个病症属性的权重;对<实体,属性,属性值>三元组数据中的实体设置约束条件,将<实体,属性,属性值>三元组数据、约束条件和各个病症属性的权重存储到neo4j图数据库中。本发明实现大规模<实体,属性,属性值>型知识图谱的智能化自动构建,同时考虑到病症与疾病多对多,计算各个病症属性的权重,以便能准确的描述医疗数据,获得更准确的临床诊断结果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1一种多模态数据融合的医疗知识图谱智能自动构建方法的框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例通过提供一种多模态数据融合的医疗知识图谱智能自动构建系统,解决了现有的方法构建的医疗知识图谱不能准确的描述医疗数据技术问题,实现准确的描述医疗数据,获得更准确的临床诊断结果。
本申请实施例中的技术方案为解决上述技术问题,总体思路如下:
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
本发明实施例提供了一种多模态数据融合的医疗知识图谱智能自动构建系统,包括:数据获取及定义模块、预处理模块、数据抽取模块、知识扩充模块、融合模块、权重计算模块和实体约束及存储模块。其中:数据获取及定义模块用于获取语料数据,并定义所述语料数据中实体属性的类别和属性值词性;预处理模块用于对所述语料数据进行预处理;数据抽取模块用于对预处理后的语料数据进行知识抽取,构建<实体,属性,属性值>三元组数据,得到语料数据集;知识扩充模块用于对语料数据集采用混合式方法进行实体属性扩充;融合模块用于对扩充后的语料数据集中的不同类别的实体属性按不同的方式进行实体属性值融合;权重计算模块用于计算实体属性值融合后的语料数据集中的各个病症属性的权重;实体约束及存储模块用于对<实体,属性,属性值>三元组数据中的实体设置约束条件,将<实体,属性,属性值>三元组数据、约束条件和各个病症属性的权重存储到neo4j图数据库中。
本发明实施例实现大规模<实体,属性,属性值>型知识图谱的智能化自动构建,同时考虑到病症与疾病多对多,计算各个病症属性的权重,以便能准确的描述医疗数据,获得更准确的临床诊断结果。下面对各个模块进行详细描述。
在一实施例中,数据获取及定义模块获取语料数据集,并定义语料数据中实体属性的类别;具体实施过程如下:
通过网络爬虫技术获取语料数据,依据多种数据源采集医疗领域资料,构建语料数据,并定义医疗领域实体基本属性及其属性值词性(指的是名词、数词等词性)。根据医疗领域实体的基本属性的特点,将其划分为多值属性、固定型单值属性或非固定型单值属性类别。实体的多值属性是指实体的属性存在多个属性值。实体的固定型单值属性是指实体的属性只存在一个属性值且表示方式唯一。实体的非固定型单值属性是指实体的属性只存在一个属性值,但表示方式不唯一。
在一实施例中,预处理模块对语料数据进行预处理。具体实施过程如下:
对语料数据进行数据清洗、预标注和分词。需要说明是的,在本发明实施例中语料数据为医疗语料数据。
在一实施例中,数据抽取模块对预处理后的语料数据进行知识抽取,构建<实体,属性,属性值>三元组数据,得到语料数据集。具体实施过程如下:
当所述医疗语料数据的类型为结构化数据(结构化数据是指作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理)时,从中抽取属性名称和属性值,依据属性名称和属性值构建<实体,属性,属性值>三元组数据,将其作为语料数据集;
当所述医疗语料数据为非结构化数据(非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据)或半结构化数据时,对其进行知识抽取,包括命名实体识别、实体属性抽取。其中属性抽取是指对属性和属性值对的抽取。采用bilstm-crf深度学习模型进行医疗实体抽取;采用基于规则的方法抽取半结构化数据中的属性、采用构建包装器的方法自动从相应网站中抽取属性。
例如,构建面向站点的包装器,从待抽取站点采样并标注几个典型的详细页面,利用这些页面通过模式学习自动构建出一个或多个类xpath表示的模式,然后将其应用在该站点的其他详细页面中,从而实现自动化的属性和属性值对的抽取。
当医疗语料数据为半结构化数据时,依据医疗语料数据构建知识抽取模板;利用知识抽取模板从医疗语料数据中抽取属性名称和属性值,构建三元组数据;
当医疗语料数据为非结构化数据时,将医疗语料数据转化为句子集合;依据预设词表对所述句子集合中的每一句子进行命名实体识别;依据命名实体识别后的句子集合构建知识抽取模板;利用知识抽取模板从所述医疗语料数据中抽取属性名称和属性值,构建三元组数据,并将抽取的属性名称和属性值添加至预设词表。
最终,全部转化为<实体,属性,属性值>三元组数据,作为语料数据集。
在一实施例中,知识扩充模块对语料数据集采用混合式方法进行实体属性扩充。具体实施过程如下:
基于模式匹配的实体属性扩充、基于属性词汇场的实体属性扩充、基于监督学习的实体属性扩充,以及基于搜索引擎问答的属性知识扩充方法。
第一,采用基于模式匹配的方法对语料数据集进行实体属性知识扩充。
首先,人工构建医疗领域实体基本属性的属性知识扩充的原始模式。然后,利用《同义词词林》根据原始模式来学习属性知识扩充的扩展模式。最后,根据原始模式和扩展模式采用基于模式匹配的方法进行实体属性知识扩充,即获取三元组<实体,属性,属性值>数据。
第二,采用基于属性词汇场的方法对语料数据集进行实体属性知识扩充。
属性词汇场由不同类型的属性线索词语及其权重构成。属性线索词语的类型包括属性词语、属性值词语、属性触发词语。首先,构建每个医疗领域实体基本属性a的词汇场。然后,对于语料中的每个句子,计算句子中包含属性a的词汇场中词语的总数m和平均权重w。若m和w大于给定阈值,则将该句子构建为扩充属性a的属性知识的候选句子。最后,根据属性a的属性值的词性从候选句子中提取医疗领域实体的属性a的属性值。
第三,采用基于搜索引擎问答的方法对语料数据集进行实体属性知识扩充。
将形如“ea”作为百度搜索引擎的查询需求,其中e为医疗领域实体,a为属性名称。根据百度搜索引擎检索结果,抽取医疗领域实体e的属性a的属性值。
第四,采用基于监督学习的方法对语料数据集进行实体属性知识扩充。
首先,根据属性值词性从语料的句子中提取医疗领域实体的候选属性值。其次,对于提取出候选属性值的句子提取其分类特征。分类特征包括属性a的候选属性值v前后五个词语的词频、v前后各五个词语的词性、v的长度、v在属性a的词汇场中的权重、v前一词是否为标点符号、v前三个词是否包含否定词、v在句子中的起始位置、v在句子中的结束位置、v所在句子中是否包含属性触发词、v所在句子中属性触发词与v的距离。最后,基于训练好的决策树、朴素贝叶斯、随机森林,以及adaboost分类器采用多分类器投票法来判别候选属性值是否为医疗领域实体的属性值。对于候选属性值v,分别采用训练好的决策树、朴素贝叶斯、随机森林,以及adaboost四种分类器来判别候选属性值。分类标签包括true和false两类,true表示该候选属性值判别为医疗领域实体的属性值,false表示该候选属性值不能判别为医疗领域实体的属性值。进一步,对于通过这四种分类器判别的候选属性值v的分类结果,选择数量较多的分类标签作为分类结果。若数量较多的分类标签为true,则构建三元组<实体,属性,属性值>数据。
其中,决策树、朴素贝叶斯、随机森林,以及adaboost分类器的训练过程如下:
首先,选取数据语料集中部分网页构建为训练集。对于训练集中的每个句子,若句子中标记为候选属性值的字符串为医疗领域实体的属性a的属性值,则将该句子赋予类别标签“true”,标记为提取属性a的属性值的正例句子;否则,将该句子赋予类别标签“false”,标记为提取属性a的属性值的反例句子。其次,提取训练集中句子的属性值的分类特征。分类特征与从包含候选属性值的句子中提取的分类特征相同。
最后,根据训练集分别训练决策树、朴素贝叶斯、随机森林,以及adaboost四种分类器。
在一实施例中,融合模块对扩充后的语料数据集中的不同类别的实体属性按不同的方式进行实体属性值融合。具体实施过程如下:
a、当实体的属性为多值属性时:
a表示候选属性值的可信度。
e表示该属性值被抽取过的次数。抽取次数越多,表示该候选属性值越准确。
公式中涉及的p1、p2为预先设置的自定义参数,可以表示s、e各项在可信度中所占的权重。
b、所述属性为固定型单值属性时:
使用基于可信度计算的方式来衡量属性值的准确性,并将可信度最高的候选属性值取出作为该属性的属性值。
(1)对结构化或半结构化数据源的可信度公式如下:
a表示可信度。
e表示该属性值被抽取过的次数。抽取次数越多,表示该候选属性值越可能是准确的属性值。
l表示候选属性值的长度,候选属性值的长度越长,表示其描述越详细,包含的内容越多,越可能是准确的属性值。
w表示该候选属性值在词汇场中的权重,若该候选属性值存在于词汇场中且权重越大,则表示其越可能是准确的属性值。
公式中涉及的p1至p4为预先设置的自定义参数,可以表示s、e、l、w各项在可信度中所占的权重。
(2)对从非结构化电子病历等非结构化数据源中通过机器学习所得的知识的属性值可信度公式如下:
r表示该候选属性值数目占总数目的比值,比值越大,表示候选属性值出现的比例越大,候选属性值越可能是准确的属性值。
公式中涉及的q1、q2为预先设置的自定义参数,可以表示r、l各项在可信度中所占的权重。
c、属性为非固定型单值属性时:
其中,排序学习算法包括:
输入:已标注训练样本集l,未标注训练样本集u,每次迭代过程中交由人工标注的样本个数t,结束条件(算法达到设定精度或完成选代次数)。
输出:h(x)=minr∈{1,2,...,k}{r:w·x-br<0}(其中:w为排序学习模型对输入样本x每一维特征赋予的权重向量;br为一组阈值(b1≤b2≤...≤bk,通常设置bk=∞),这k个阈值把空间划分成了k个连续的子空间,每个子空间对应一个序标号,即满足所有的样本x都有相同的排序结果)。
具体过程如下:
(1)初始化w1=0,b1=b2=...=bk,bk=∞。
(2)使用l建立排序模型h(x)。
(3)使用h(x)对u进行排序。
(4)使用q(xi)(查询函数)从u中选择t个“最值得标注”的样本交由人工标注,并将这些样本从u移入l。
(5)更新排序模型。
(6)重复步骤(3)~步骤(5),直到满足结束条件,输出h(x)=minr∈{1,2,...,k}{r:w·x-br<0}。
在一实施例中,权重计算模块计算实体属性值融合后的语料数据集中的各个病症属性的权重。具体实施过程如下:
采用一种基于贝叶斯建模的方法计算病症属性(病症属性是疾病实体的一类属性,病症指的是疾病的症状)的权重。
即:i=log(p(xi=1|yj=1))-log(p(xi=1|yj=0))
其中,i表示单个病症对于疾病的影响因子;xi表示id为i的病症属性,yj表示id为j的疾病实体,p(xi=1|yj=1)表示某个病人患有疾病id为j的疾病的情况下有症状id为i的症状的概率,相应的,p(xi=1|yj=0)表示未患有疾病id为j的情况下具有症状id为i的症状的概率。从上式中可以看出,如果某一个症状多次出现在某一种疾病中,通过上述表达式算出的该症状对此疾病的影响因子值就越大,这就意味着,在知识图谱中连接对应疾病实体与病症属性的边的权重值越大。
在一实施例中,实体约束及存储模块对<实体,属性,属性值>三元组数据中的实体设置约束条件,将<实体,属性,属性值>三元组数据、约束条件和各个病症属性的权重存储到neo4j图数据库中。具体实施过程如下:
由于某一特定症状可由多种疾病引起,因此,在将病症属性导入到neo4j数据库中时,必须对每一个病症属性设置唯一约束。同时,由于将数据导入到数据库中都采用的是三元组的形式,因此也必须对疾病实体设置唯一约束,需要说明的是,在本发明实施例中采用neo4j数据库提供的cypher语言对数据库操作设置约束。
例如:为疾病实体设置唯一约束。
采用neo4j数据库提供的cypher语言设置唯一约束,即createconstrainton(d:disease)assertd.idisunique。
最终,使用neo4j提供的jdbc快速将医疗实体导入到neo4j中,完成知识图谱的构建。
通过本发明实施例的系统能实现大规模<实体,属性,属性值>型知识图谱的智能化自动构建。并考虑面向多个数据源构建时的三类属性值的融合问题,提出并实现了一种基于主动排序学习的非固定型单值属性的融合方法,以解决医疗数据量过大、样本标注获取代价大的问题。同时考虑到病症与疾病多对多,计算各个病症属性的权重,以获得更准确的临床诊断结果。
本发明实施例还提供一种多模态数据融合的医疗知识图谱智能自动构建方法,该方法由计算机执行,如图1所示,包括步骤s1~s7:
可理解的是,本发明实施例提供的上述多模态数据融合的医疗知识图谱智能自动构建方法与上述多模态数据融合的医疗知识图谱智能自动构建系统相对应,其有关内容的解释、举例、验证等部分可以参考多模态数据融合的医疗知识图谱智能自动构建系统中的相应内容,此处不再赘述。
综上所述,与现有技术相比,具备以下有益效果:
1、本发明实施例实现大规模<实体,属性,属性值>型知识图谱的智能化自动构建,同时考虑到病症与疾病多对多,计算各个病症属性的权重,以便能准确的描述医疗数据,获得更准确的临床诊断结果。
2、本发明实施例提出并实现了一种基于主动排序学习的非固定型单值属性的融合方法,将传统的属性值融合问题转化为机器学习排序问题,并且能够自动获取高质量的训练样本,筛选出最有效的属性值,并且解决了医疗领域数据量大、样本获取代价大的问题。
3、本发明实施例通过将实体属性知识的扩充和属性值的融合,一方面提高了领域知识获取的准确率,另一方面极大增加了获取的领域实体知识的规模。
需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。