Page 195 - 《软件学报》2020年第10期
P. 195
陈德彦 等:基于领域语义知识库的疾病辅助诊断方法 3171
健康知识问答服务、健康教育/咨询服务等需求的语义知识库.
W3C 推荐的针对语义知识库的语义层(即 RDF 层)查询标准语言为 SPARQL [25] ,这种查询语言不仅理解
RDF 的语法,而且理解 RDF 的数据模型和 RDF 词汇的语义,几乎所有的 RDF 查询工具都提供了对 SPARQL 查
询语义的支持 [22] .
2 领域语义知识库的构建
由于领域知识的专业性,目前公认领域本体的开发需要领域专家的参与,并由知识工程师将领域专家提供
的领域知识建模并形式化为可被计算机处理和共享利用的领域本体知识.但又由于领域知识体系的复杂性,完
全由人工从头构建几乎是不可能的,并且在时间上也是不可接受的.所以本体工程 [22] 以及几乎所有本体建模方
法 [26−31] 都强调在基于本体构建领域语义知识库之前,考虑集成和复用已经存在的领域本体知识库.例如,通过本
体集成(ontology integration) [32] 和本体映射(ontology mapping) [33,34] 的方法来快速构建所需要的领域本体知识
库;或者采用本体学习(ontology learning) [35] 技术自动或半自动地从领域数据源中获取领域知识,并基于本体进
行描述,领域数据源包括领域中的结构化、半结构化和非结构化数据;或者从其他开放语义知识库中抽取可复
用的领域知识.例如,Freebase [36−38] 、DBpedia [39] 、YAGO [40] 等.本文拟采用从开放语义知识库中抽取可复用的领
域知识,考虑到本文的研究目的,需要获取关于疾病、症状及其语义关系相关的知识.为此,针对这部分知识的正
确性和完整性,和医学专家一起,对 Freebase、DBpedia、YAGO 等开放语义知识库进行了对比分析,最终选择了
Freebase 作为抽取的数据源.
Freebase 是一个实用的、可伸缩的、图形化的、结构化的一般人类知识的数据库,用户可以在一个开放的
平台上协作创建、结构化和维护其内容.Freebase 数据被表示为三元组(又称为事实)的格式,可以被可视化表示
为一个有向图.Freebase 数据来自大量高质量的开放数据源,例如 Wikipedia [41] 、MusicBrainz [42] 、WordNet [43] 等.
Freebase 已经成为 LOD(linked open data) [44] 项目的一个重要的数据源.Freebase 以每周为单位,将其数据在
CC-BY [45] 许可下发布为 N-Triples [46] RDF 格式的 dump 文件.该文件采用 gzip 进行压缩,解压后为一个单一的文
本文件.例如,在 2014 年 8 月下载的 gzip 压缩包的大小为 22GB,解压后大小为 250GB,共包含约 19 亿个三元组.
Freebase RDF dump 包包含了 11 个实现域(implementation domain)、5 个 OWL 域和 89 个主题域(subject matter
domain) [47] .Freebase 的 medicine 主题域描述了健康医疗领域的本体定义和领域实例数据(即领域常识知识).例
如,medicine 主题域的本体定义中描述了疾病、症状、病因、风险因素、药物等相关概念和属性,并基于该本体
定义描述了健康医疗领域的一些常识知识,即由相关概念标注的实例数据及其语义关系.
本文的研究选择直接从 Freebase RDF dump 包中抽取 medicine 主题域的知识.在完全理解与 Freebase 相关
的概念、Freebase 的知识表示模型和 Freebase RDF dump 包的结构特征的情况下,结合 Linux 下的命令行工具(例
如 gzip、sed、grep、cat、wc、head、tail 等)、shell 脚本、Apache Jena [48] 提供的相关工具和 SPARQL 查询,设
计和实现了一种从 Freebase RDF dump 中快速、准确、完整地抽取某个或者某几个领域的知识的方法 [49] .该方
法包括 6 个主要步骤.
1) 数据预处理.数据预处理的目的有两个:(a) 缩减数据包的规模,以有利于对其进行存储和处理.该方法采
用 Linux 下的命令行工具和 shell 脚本对数据包进行预处理.一方面,将 N-Triples 格式转换为 Turtle [50] 格式,这将
使得数据包的规模减少约一半;另一方面,删除实现域中的事实(这些事实用于内部授权管理或者链接到外部资
源,对于领域知识库用户来说并不需要或者并不关心),这可以使数据包的规模再减少约一半.(b) 删除和处理非
法格式的三元组,这些非法格式的三元组会导致在将数据包加载到存储中时发生中断.
2) 数据装载.使用 Jena 提供的 TDB [51] 作为 RDF Store(又称为 triple store),使用 Jena 提供的 tdbloader 命令
行工具将预处理后的数据包加载到 TDB 中.
3) 存储发布.使用 Jena 提供的 Fuseki SPARQL Server [52] 对 TDB 进行公开,以利用 Fuseki 提供的 SPARQL
查询服务端点(endpoint)实现对 TDB 存储的查询.
4) 知识抽取.通过构造 SPARQL 查询分别抽取 medicine 领域的本体定义 O medicine (包括类定义和属性定义)