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