医学知识图谱是实现智慧医疗的基石,有望带来更高效精准的医疗服务;然而,现有知识图谱构建技术在医学领域中普遍存在效率低、限制多、拓展性差等问题。
针对医疗数据跨语种、专业性强、结构复杂等特点,此处重点对构建医学知识图谱的关键技术进行了自底向上的全面解析,涵盖了医学知识表示、知识抽取、知识融合和知识推理以及知识质量评估五部分内容。
一、知识建模
即建立知识图谱的数据模式,行业知识图谱的数据模式对整个知识图谱的结构进行定义,因此需要保证可靠性。
1.常用方法
基于行业现有的标准进行转换。
从现有的高质量行业数据源(如业务系统数据库表)中进行映射。
2.使用知识图谱对数据进行抽象建模
利用属性来表示不同数据源中针对实体的描述,形成对实体的全方位描述。(属性映射与归并)
利用关系来描述各类抽象建模成实体的数据之间的关联关系,从而支持关联分析。(关系抽取)
通过实体链接技术,实现围绕实体的多种类型数据的关联存储。(实体链接)
使用事件机制描述客观世界中动态发展,体现事件与实体间的关联;并利用时序描述事件的发展状况。(动态事件描述)
3.建模工具Protégé
二、知识获取
1.获取结构化数据的D2R工具
D2RQ:将关系数据库转换为虚拟的RDF数据库的平台,主要包括:
2.半结构化行业数据源解析
针对不同结构的数据配置相应的包装器。
包装器配置工具:
例如:
3.文本信息抽取
主要有实体识别、概念抽取、关系抽取、事件抽取。
其中CloseIE面向特定领域抽取信息、预先定义好抽取的关系类型、基于领域专业知识抽取、规模小且精度比较高;OpenIE面向开放领域抽取信息、关系类型事先未知、基于语言学模式进行抽取、规模大且精度相对较低。
1)OpenIE的典型代表工具有ReVerb、TextRunner
通常用于做第一轮的信息抽取探索,从它的结果中发现新的关系,然后在此基础上应用其它的信息抽取方法。
2)CloseIE典型工具:DeepDive
三、知识融合1.数据模式层融合
行业知识图谱的数据模式层通常是由专家人工构建或从可靠的结构化数据中映射得到的,通常在映射时会通过设置融合的规则来确保数据的统一。
2.数据层融合
1)实体合并
在构建行业知识图谱时,实体优先从结构化的数据在获取;对于结构化的数据,通常有对实体进行唯一标识的主键,因此在进行知识抽取时即可设定实体合并的依据。
从非结构化数据中抽取的实体,同样使用设置合并条件的规则来完成实体的合并;例如,企业合并是可以通过企业名称直接合并,企业高管合并是人名相同+同一企业(企业高管中同名的概念极低)。
2)实体属性融合
具有时态特性的属性(如):使用新的数据覆盖老的数据;依据数据源的可靠性进行选取:结构化数据源中的质量通常较高。
3)冲突检测与解决
四、自然语言处理
美国著名的计算机科学家贾里尼克领导他的实验室,借助数学中的统计学工具,把当时语言识别的成功率从70%提升到90%;同时让语言识别的规模,从几千个单词上升到几万个单词,让语言识别有了实际应用的可能。
统计学和自然语言好像没什么关系,它怎么处理自然语言呢?
其实贾里尼克的思路很简单,他认为,要判断一个句子正不正确,就要看这个句子出现的可能性的大小,这个可能性用概率来衡量;比如,我们假定第一个句子出现的概率是二分之一,第二个句子出现的概率是千分之一,那第一个句子出现的可能性就比第二个句子大得多;那么从概率的角度来说,第一个句子就更有可能是正确的。
所以接下来我们需要做的事,就是判断一个句子出现的可能性有多大;这时就需要用到“马尔科夫假设”,这个假设是说,假定一个句子里每个词出现的概率,只和前一个词有关,就好比“涨停”这个词,最有可能出现在“股票”这个词之后。
那么,只要给计算机量足够大的机读文本,也就是专业人士说的语料库,计算机就能算出来,在一个特定词后面出现某个词的概率;这样,只要把一句话里所有词出现的概率相乘,就是这个句子出现的概率;概率最大的句子,就是最有可能正确的句子。
按照这个思路,科学家们成功地让计算机拥有了处理自然语言的能力。
1.词性
句子的基本成分是:主语、谓语、宾语;补充成分是定语、状语、补语。
2.句法
句子划分口诀:
五、知识存储
知识图谱是基于图的数据结构,其存储方式主要有两种方式:RDF存储和图数据库(GraphDatabase),常见的图数据存储—GraphDBMS。
1.基础存储
可按数据场景选择使用关系数据库、NoSQL数据库及内存数据库。
2.数据分割
基本类型:整数表、浮点数表、日期类型表…
集合类型:List型表、Range型表、Map型表…
3.缓存与索引
使用分布式Redis作为缓存,按需对数据进行缓存。对三元组表按需进行索引,最多情况下可建立九重索引。
4.善于使用现在成熟存储
使用ElasticSearch实现数据的全文检索l结构固定型的数据可使用关系数据库或NoSQL。
对于非关系型的数据尽量不入图存储,避免形成大节点;非关系型的数据,使用适合的数据存储机器进行存储,通过实体链接的方式实现与图谱数据的关联。
六、知识计算1.图挖掘计算
集成实现基本图算法:
2.本体推理
使用本体推理进行新知识发现或冲突检测。
w本体知识推理工具——RDFox。
本体推理基本方法:
3.基于规则的推理
使用规则引擎,编写相应的业务规则,通过推理辅助业务决策。
基于规则推理工具——Drools规则定义。
七、上层应用的开发
等我们构建好知识图谱之后,接下来就要使用它来解决具体的问题;例如对于风控知识图谱来说,首要任务就是挖掘关系网络中隐藏的欺诈风险。
从算法的角度来讲,有两种不同的场景:一种是基于规则的;另一种是基于概率的。鉴于目前AI技术的现状,基于规则的方法论还是在垂直领域的应用中占据主导地位;但随着数据量的增加以及方法论的提升,基于概率的模型也将会逐步带来更大的价值。
1.基于规则的方法论
首先,我们来看几个基于规则的应用,分别是不一致性验证、基于规则的特征提取、基于模式的判断。
1)不一致性验证
为了判断关系网络中存在的风险,一种简单的方法就是做不一致性验证,也就是通过一些规则去找出潜在的矛盾点。
2)基于规则提取特征
我们也可以基于规则从知识图谱中提取一些特征,而且这些特征一般基于深度的搜索比如2度、3度甚至更高维度;比如我们可以问一个这样的问题:“申请人二度关系里有多少个实体触碰了黑名单?”,从图中我们很容观察到二度关系中有两个实体触碰了黑名单(黑名单由红色来标记),等这些特征被提取之后,一般可以作为风险模型的输入。
在此还是想说明一点,如果特征并不涉及深度的关系,其实传统的关系型数据库则足以满足需求。
3)基于模式的判断
这种方法比较适用于找出团体欺诈,它的核心在于通过一些模式来找到有可能存在风险的团体或者子图(sub-graph),然后对这部分子图做进一步的分析。
这种模式有很多种,在这里举几个简单的例子;比如在下图中,三个实体共享了很多其他的信息,我们可以看做是一个团体,并对其做进一步的分析。
再比如,我们也可以从知识图谱中找出强连通图,并把它标记出来,然后做进一步风险分析;强连通图意味着每一个节点都可以通过某种路径达到其他的点,也就说明这些节点之间有很强的关系。
2.基于概率的方法
社区挖掘算法的目的在于从图中找出一些社区,对于社区,我们可以有多种定义,但直观上可以理解为社区内节点之间关系的密度要明显大于社区之间的关系密度;下面的图表示社区发现之后的结果,图中总共标记了三个不同的社区;一旦我们得到这些社区之后,就可以做进一步的风险分析。
由于社区挖掘是基于概率的方法论,好处在于不需要人为地去定义规则,特别是对于一个庞大的关系网络来说,定义规则这事情本身是一件很复杂的事情。
标签传播算法的核心思想在于节点之间信息的传递,这就类似于,跟优秀的人在一起自己也会逐渐地变优秀是一个道理;因为通过这种关系会不断地吸取高质量的信息,最后使得自己也会不知不觉中变得更加优秀(具体细节不在这里做更多解释)。
相比规则的方法论,基于概率的方法的缺点在于:需要足够多的数据。如果数据量很少,而且整个图谱比较稀疏(Sparse),基于规则的方法可以成为我们的首选;尤其是对于金融领域来说,数据标签会比较少,这也是为什么基于规则的方法论还是更普遍地应用在金融领域中的主要原因。
1)基于动态网络的分析
八、知识应用1.语义全文检索
基于知识图谱中的知识,解决传统搜索中遇到的关键字语义多样性及语义消歧的难题,通过实体链接实现知识与文档的混合检索。
针对医院临床电子病历数据大量积累无法快速、高效地服务于临床医疗、医学科研、以及病例管理的现象,提出研究更高效的电子病历检索方法;采用全文索引搜索引擎技术,以关键字、关键词为索引,把电子病历统一转换成结构化数据,最后生成病历检索索引文件,进而建立电子病历全文检索系统。
2.智能问答
医院的医生每天病人接待量是固定,而前来就诊的人流量往往很大,这就造成供需失衡。
对待这种情况,利用机器人可以很好的帮我们分担一部分压力。
利用医院大量的、精确的、病例数据,我们用这些数据进行模型训练,可以做到在线、实时和就诊的人进行语言互动,给就诊的人提供精确的诊断参考。
3.辅助诊疗/决策
为医生临床治疗提供决策依据,有助于确保医疗质量。
系统通过比较医疗行为中与医学指引不同的地方,提醒医生防止潜在的错误,如药物不良反应等;从而降低医疗事故率。还可以提供同类治愈病例的用药推荐,给医生提出诊疗建议;可以使医生从耗时过长的简单咨询工作中解脱出来,从而提高治疗效率。
4.知识订阅
5.智能导诊等
6.落地方案
使用快速迭代法,通过维度、作用域、边界快速分解业务模型:
本文由@CTO老王原创发布于人人都是产品经理,未经许可,禁止转载