一种智慧医疗知识图谱的构建方法与流程

文档序号:16236913发布日期:2018-12-11 22:41阅读:1363来源:国知局
一种智慧医疗知识图谱的构建方法与流程

本发明属于面向知识图谱技术领域,具体涉及一种智慧医疗知识图谱的构建方法。

背景技术

随着人工智能的蓬勃发展,知识图谱涉及到的知识抽取、表示、融合、推理、问答等关键问题得到一定程度的解决和突破,知识图谱成为知识服务领域的一个新热点,受到国内外学者和工业界广泛关注。

知识图谱是智能大数据的前沿研究问题,它以独有的技术优势顺应了信息化时代的发展,比如渐增式的数据模式设计;良好的数据集成;现有rdf、owl等标准支持;语义搜索和知识推理能力等。在医学领域,随着区域卫生信息化及医疗信息系统的发展,积累了海量的医学数据。如何从这些数据中提炼信息,并加以管理、共享及应用,是推进医学智能化的关键问题,是医学知识检索、临床诊断、医疗质量管理、电子病历及健康档案智能化处理的基础。

近年来,对医学上的临床决策支持和辅助诊断系统的需求大幅增加。现有的平台或系统依赖于通过大量专业人员手工编辑的知识库或使用简单的统计数据生成。



技术实现要素:

(一)要解决的技术问题

为了解决现有技术的上述问题,本发明提供的一种智慧医疗知识图谱的构建方法,能够实现对疾病问题的智能辅助诊断的目的。

(二)技术方案

为了达到上述目的,本发明采用的主要技术方案包括以下步骤:

一种智慧医疗知识图谱的构建方法,包括如下步骤:

a、获取病历数据,并提取病历中识别的医疗实体;

b、对病历数据和提取到的医疗实体进行预处理,获取病人和医疗实体的共现矩阵;

c、采用朴素贝叶斯模型计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt,或采用noisyor模型计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt;

d、对步骤c中计算获得的所有置信度值按照从大到小进行排名,以前n个或置信度置大于某一阀值的关系为边,以所有的医疗实体为节点构建智慧医疗知识图谱;

所述朴素贝叶斯模型为能够计算共现矩阵中每对节点之间关系存在的置信度值的算法模型;

所述noisyor模型为能够计算共现矩阵中每对节点之间关系存在的置信度值的算法模型。

优选地,当步骤c中采用朴素贝叶斯模型计算获取所有置信度值时,所述步骤b和步骤c之间还包括:

对所述步骤b中获取的共现矩阵进行去噪,去噪后的共现矩阵用以所述朴素贝叶斯模型计算获取置信度值。

优选地,所述步骤a还包括如下子步骤:

a1、获取所有病历的数据;

a2、提取每条病历中已经识别的非否定范围内的医疗实体,其中,所述医疗实体包括:疾病、症状和检查。

优选地,所述步骤b还包括如下子步骤:

b1、以单条病历为数据基本单位,每条电子病历对应一位病人,并且给每个病人分配一个编号;

b2、根据提取的所有医疗实体和相对应的病人获取所有病历数据集下的病人-疾病,病人-症状和病人-检查的共现矩阵;

其中,检查包括检查的过程和检查的结果。

优选地,所述步骤c中采用朴素贝叶斯模型计算获取所有置信度值时,所述方法还包括:

根据步骤b中获取的共现矩阵,获取朴素贝叶斯计算所需要的参数,然后根据如下公式计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt;

所述公式为:

imptnb=log(p(xi=1|yj=1))-log(p(xi=1|yj=0))

其中,

xi为表示存在症状i的二元变量;

yj为表示存在疾病j的二元变量;

p(xi=1|yj=1):是表示条件概率,即在存在疾病j的情况下,存在症状i的概率;

p(xi=1|yj=0):表示条件概率,即在没有疾病j的情况下,存在症状i的概率。

优选地,所述步骤c中采用noisyor模型计算获取所有置信度值时,所述方法还包括:

根据步骤b中获取的共现矩阵,获取noisyor模型计算所需要的参数,然后根据如下公式计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt;

所述公式为:

其中,yj为出现的疾病;

xi为子症状。

(三)有益效果

本发明的有益效果是:本发明提供的一种智慧医疗知识图谱的构建方法,本发明直接从电子病历挖掘疾病与症状、疾病与检查的关系,构建了一种智慧医疗知识图谱,为智能问答、辅助疾病诊断等应用奠定了基础。

在提取的医疗实体概念的基础之上,选取其中正面出现在病历中的医疗实体,去除否定文本范围内的实体,使用朴素贝叶斯和noisyor等机器学习算法学习疾病-症状与疾病-检查关系,从而根据实体和实体关系建立相应的疾病-症状和疾病-检查的智慧医疗知识图谱。

附图说明

图1为本发明一种智慧医疗知识图谱的构建方法到的流程示意图;

图2为本发明一种智慧医疗知识图谱的构建方法到的流程示意图;

图3为本发明一种智慧医疗知识图谱的构建方法到的流程示意图;

图4为本发明一种智慧医疗知识图谱的构建方法到的流程示意图;

图5为本发明一种智慧医疗知识图谱的构建方法到的流程示意图。

具体实施方式

为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。下面结合附图对本发明的具体实施方式做详细说明。

实施例1

如图1所示:本实施例公开了一种智慧医疗知识图谱的构建方法,包括如下步骤:

a、获取病历数据,并提取病历中识别的医疗实体。

本步骤为从现有电子病历中读取并识别病历中的医疗实体,这里所述的医疗实体包括:病症、症状和检查;这里所述的检查包括检查方法、过程和治疗方法过程和结果。

b、对病历数据和提取到的医疗实体进行预处理,获取病人和医疗实体的共现矩阵。

本步骤中通过对提取到的医疗实体进行预处理,得到病人和医疗实体之间的共现矩阵。

c、采用朴素贝叶斯模型计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt,或采用noisyor模型计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt。

本步骤通过朴素贝叶斯模型或noisyor模型计算获取共现矩阵中所有节点之间的置信度值impt,这里所述的置信度值还可称为权重值,用于体现节点之间的关联度。

d、对步骤c中计算获得的所有置信度值按照从大到小进行排名,以前n个或置信度置大于某一阀值的关系为边,以所有的医疗实体为节点构建智慧医疗知识图谱。

应说明的是:本实施例中所述的朴素贝叶斯模型为能够计算共现矩阵中每对节点之间关系存在的置信度值的算法模型。

本实施例中所述的noisyor模型为能够计算共现矩阵中每对节点之间关系存在的置信度值的算法模型。

此外,应指出的是:当步骤c中采用朴素贝叶斯模型计算获取所有置信度值时,所述步骤b和步骤c之间还包括:

对所述步骤b中获取的共现矩阵进行去噪,去噪后的共现矩阵用以所述朴素贝叶斯模型计算获取置信度值。

这里的去噪方法为设定一个阀值5,当病症和病状同时出现的次数小于5次时,将两者的关联信息当做不充分舍去。这里去噪的步骤是为了弥补朴素贝叶斯模型在计算置信度值时的缺陷,提高最终计算结果的准确率。

此外,如图2所示,本实施例中所述的步骤a还包括如下子步骤:

a1、获取所有病历的数据。

a2、提取每条病历中已经识别的非否定范围内的医疗实体,其中,所述医疗实体包括:疾病、症状和检查。

此外,如图3所示:本实施例中所述的步骤b还包括如下子步骤:

b1、以单条病历为数据基本单位,每条电子病历对应一位病人,并且给每个病人分配一个编号。

b2、根据提取的所有医疗实体和相对应的病人获取所有病历数据集下的病人-疾病,病人-症状和病人-检查的共现矩阵。

其中,应说明的是:这里所述的检查包括检查的过程和检查的结果。

本实施例中所述的步骤c中采用朴素贝叶斯模型计算获取所有置信度值时,所述方法还包括:

根据步骤b中获取的共现矩阵,获取朴素贝叶斯计算所需要的参数,然后根据如下公式计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt;

所述公式为:

imptnb=log(p(xi=1|yj=1))-log(p(xi=1|yj=0))

其中,

xi为表示存在症状i的二元变量;

yj为表示存在疾病j的二元变量;

p(xi=1|yj=1):是表示条件概率,即在存在疾病j的情况下,存在症状i的概率;

p(xi=1|yj=0):表示条件概率,即在没有疾病j的情况下,存在症状i的概率。

其次,当本实施例中所述步骤c中采用noisyor模型计算获取所有置信度值时,所述方法还包括:

根据步骤b中获取的共现矩阵,获取noisyor模型计算所需要的参数,然后根据如下公式计算获取步骤b中共现矩阵中每对节点之间关系存在的置信度值impt。

所述公式为:

其中,yj为出现的疾病;

xi为子症状。

最后对步骤c中计算获得的所有置信度值按照从大到小进行排名,以前n个或置信度置大于某一阀值的关系为边,以所有的医疗实体为节点构建智慧医疗知识图谱。

实施例2

1、数据收集与准备

1.1从电子病历中提取概念

我们从结构化和非结构化数据中提取了正面提及的疾病和症状(概念)。结构化数据由icd-9(国际疾病分类)诊断代码组成。非结构化数据由主诉,分诊评估,护理笔记和医师资格评论。分类评估是指自由文本在分诊时记录护理评估。

从ghkg中选择所考虑的一组疾病和症状以建立后续比较的基础。我们使用字符串匹配来通过它们的通用名称,别名或者首字母缩略词来搜索概念,其中别名和首字母缩略词均来自ghkg以及来自统一医学语言系统(umls)的已知映射的疾病。同样,如果提供了到icd-9代码的链接,我们会在记录的结构化管理数据中搜索该代码。此外,发生在否定范围内的不计算在内。

1.2谷歌(ghkg)健康知识图谱

我们研究的一个新颖方面是使用由google提供并且有权使用的广泛且手动策划的健康知识图表。谷歌健康知识图表于2015年首次公布,旨在帮助用户进行健康决策。谷歌使用多步骤的过程创建了该图表,该过程将数据挖掘技术与专家小组进行了大量的手动调整。该图旨在供搜索google获取健康信息的患者使用(即面向患者)

我们使用了ghkg的一个子集,为此我们在数据中提供了充分的支持。我们将对疾病的充分支持定义为至少有100个正面提及,并且症状至少有10个正面提及。这导致156种疾病和491种症状。该图由作为节点的医学概念(疾病和症状)和作为边缘的疾病症状关系组成。

ghkg中的少数概念被归类为疾病和症状(例如,“ii型糖尿病”是一种疾病,但也是'多囊卵巢癌'的症状)。在这些情况下,我们只将这些概念指定为疾病。每个概念都包括一个概念的常用名称,别名和可以映射到的icd-9代码和umls概念。另外,为疾病和症状提供了对概念预期频率的度量。对于症状节点,给予疾病存在症状的条件期望频率被提供为“频繁”或“总是”。对于疾病节点,频率按年龄分别描述('老','成人','年轻人'等)为“非常频繁”,“频繁”,“罕见”,“非常罕见”或“从不”。

(1)实体关系学习算法

对于疾病和症状的关系(疾病和检查的关系同理),本研究采用的模型学习的实体关系权重是用来衡量在某个疾病发生的情况下导致一个症状出现的可能性大小。所以,模型实质上是基于电子病历中疾病和症状实体概念的共现进行统计学习的机制,也是学习和度量疾病和症状之间因果关系的。疾病和症状作为节点,两者之间的关系及其权重作为节点之间的边,并且疾病是因,症状或检查结果是果,因此边是从疾病节点指向症状或检查节点的有向边,多种不同的疾病和症状、检查等节点和对应的边就自然构成了一个有向无环图(directedacyclicgraph,dag)。

(1.1)模型的因果分析:

在广泛地推论模型表现的差异时,疾病-症状知识图谱本质上是描述疾病如何引发症状的因果图。利用因果查询定义一个好的知识图谱,可以通过pearl的‘do’操作符(pearl提出的干预算子do(x))来形式化,我们在该操作符中介入并设置一种疾病“出现”或“不出现”,并查看它如何影响一个症状的可能性。这种可能性就是通过如式(1.1)所示的疾病j与症状i之间的重要性度量(impt)来表达。

真实图谱中边i,j的权重与症状表现的似然比紧密相关,因为我们介入并做了这样的干预:将疾病j设置为“出现”或“不出现”。通过使用pearl'sdo-calculus制定重要性度量,我们能够解开疾病和症状之间的相互关系,仅仅是因为该疾病经常与其他导致该症状的疾病一起出现。

重要性度量(impt)公式中的几个参数定义:

(1.2)干预算子do(x):

为了引入“因果”的概念,则需要引进do(x)算子,do的意思可以理解成“干预”。有了“干预”的概念,才可以在图中因果关系。

在有向无环图dag中有:

do(xi)=xi'(1.2)

根据do(x)算子则有:

p(x2=x2|x1=x1)=p(x2=x2|do(x1)=x1)(1.3)

由于x1是x2的“原因”,“条件”和“干预”x1,对应的x2的分布相同。根据do算子,便可以定义因果关系。对应到本研究当中,x1代表的就是疾病,x2代表的就是症状或检查及其结果。

2基于朴素贝叶斯模型的实体学习

2.1朴素贝叶斯在构建医学知识图谱中的假设:

朴素贝叶斯的定义假设是:症状子节点之间的条件独立性。在本研究的情况下,这转化为症状在给定疾病父节点的情况下彼此有条件地独立。这是过度简化,因为对于某种疾病,一种症状的出现可能会使另一种症状更可能发生。例如,对于疾病“支气管炎”,“充血”和“头痛”都是常见的症状。虽然这两种情况并不总是在疾病出现时同时发生,但“充血”会增加“头痛”的可能性。

2.2朴素贝叶斯重要性衡量标准的计算公式:

朴素贝叶斯(nb)的重要性衡量标准(impt)是:

imptnb=log(p(xi=1|yj=1))-log(p(xi=1|yj=0))(2.1)

朴素贝叶斯(nb)的重要性衡量标准(impt)公式中的几个参数含义:

xi:是表示存在症状i的二元变量。

yj:是表示存在疾病j的二元变量。

p(xi=1|yj=1):是表示条件概率,即在存在疾病j的情况下,存在症状i的概率。

p(xi=1|yj=0):是表示条件概率,即在没有疾病j的情况下,存在症状i的概率。

根据对学习模型的分析,朴素贝叶斯使用式(1.1)中所示公式的对数作为其重要性度量。

选择公式(2.1)作为重要性度量,是因为如果一个疾病的出现会使某个病症出现的概率增大,那我们认为这两个节点之间更应该存在一条边。

2.3用朴素贝叶斯模型构建医学知识图谱的具体步骤:

根据对本研究中朴素贝叶斯模型应用的分析和impt的计算方案,给出学习疾病-症状和疾病-检查关系并构建对应知识图谱的概要思路过程,如图4所示:主要分为四个步骤:

步骤a:提取每条病历中已经识别的非否定范围内的疾病、症状和检查等实体概念。

步骤b:用提取的实体形成病人-疾病,病人-症状和病人-检查等共现矩阵。

步骤c:先设置疾病实体与症状或检查实体的共现次数阈值作为去噪措施的试验,然后根据共现矩阵统计所有结果并计算每对疾病-症状或疾病-检查的impt中条件概率的值,从而计算对应于每对疾病-症状或疾病-检查的重要性度量的值。

步骤d:为每种疾病形成和疾病-症状及疾病-检查的关系知识图谱。

由此完成基于朴素贝叶斯模型的实体关系学习的过程。

步骤a的分解:

步骤a1:提取每条电子病历中已经识别的非否定范围内的疾病、症状和检查等实体概念。

步骤a2:以单条电子病历为数据基本单位,每条电子病历对应一位病人,并且给每个病人分配一个编号以方便接下来的工作。

步骤a3:根据icd9将所有的疾病都映射到唯一的icd9代码以方便之后的评估图谱工作。

本步骤主要是为了对模型进行评估,来比较不同算法的精确率召回率等。

步骤b的分解:

步骤b1:根据提取的正面提及的实体概念,可以得出每个病人(即每条病历)同时出现的疾病、症状和检查(每条电子病历可能有多个疾病、多个症状和多项检查)。

步骤b2:得出整个数据集下的病人-疾病,病人-症状和病人-检查等共现矩阵。

步骤b3以:统一的简易格式存入文件,其中检查不仅包括检查还包括检查结果。

步骤b的主要工作是把电子病历中对本研究有价值的信息都提炼出来并转化成更简单易懂的形式存下来,方便接下来的工作。

步骤c的分解:

步骤c1:根据共现矩阵,针对每种疾病和各种症状、每种疾病和各种检查来依次统计所有结果,包括某个疾病发生的情况下各种症状同时出现的统计结果、某个疾病发生的情况下各种症状不同时出现的统计结果。

步骤c2:依据统计结果来计算各条件概率的值,从而根据式(2.1)计算impt,在本步骤中采用最大似然估计的原理估计模型的参数。

步骤c3:在统计的过程中选择疾病和症状对或疾病和检查对之间至少若干次共同出现的不同的阈值作为朴素贝叶斯的降噪措施,以便计算出必要的统计量,以免对罕见疾病造成不公平的偏见。

步骤c4:根据结果选择合适的阈值。

步骤d的分解:

步骤d1:通过朴素贝叶斯模型计算出的每种疾病对应于每种共现的症状或检查的impt,从而度量出了每个疾病父节点及其症状子节点、检查子节点之间的因果关系的大小。

步骤d2:针对每种疾病,按降序排列每个共现症状或检查的权重值(即impt值)。

步骤d3:将排序的结果按指定格式存入文件中从而形成初步的关系知识图谱。存储文本格式如下:

疾病-症状:疾病|症状|权重

疾病-检查:疾病|检查|检查结果|权重。

用朴素贝叶斯模型构建医学知识图谱的算法实现:

这里的算法实现主要分为数据读取和处理、数据统计和impt计算以及关系图谱构建三大模块。

模块一:数据读取和处理模块

这部分主要是读取实体共现文件到内存中,分为两个步骤:

步骤a:读取疾病集合,将所有疾病添加到疾病集合列表中。

步骤b:依次遍历每个疾病,针对每种疾病,读取病人-疾病共现。

步骤b可分解为:

步骤b1:外围循环遍历疾病列表中的疾病,每一次循环仅对一个疾病进行计算,生成一个文件,文件名为“疾病icd.out”。

步骤b2:分别创建两个空列表,一个是存放患有该疾病的病人列表,另一个是存放没有患该疾病的病人列表。

步骤b3:分别创建两个空字典,一个用来存放患有该疾病的病人同时患的症状,另一个用来存放未患该疾病的病人同时患的症状。

步骤b4:将患有该疾病的病人添加到列表diag_patient中,将没有患该疾病的病人添加到列表non_patient中。

模块二:数据统计和impt计算模块

这部分主要是统计结果并计算朴素贝叶斯(nb)的重要性衡量标准(impt),主要分为两个步骤:

步骤a:读取病人-症状共现并做结果统计,统计疾病-症状共现和不共现。

步骤b:将统计的疾病-症状共现次数进行排序,之后针对每对疾病-症状进行权重的计算。

步骤a可分解为:

步骤a1:循环遍历每条记录,若该条记录中病人患有该疾病,则将该记录中的症状加入字典symp_dict,如果字典中已存在该症状,则value加1;

若该条记录中病人没有患该疾病,则将该记录中的症状加入字典non_symp_dict,如果字典中已存在该症状,则value加1。

步骤a2:将symp_dict的键值对按频数排序。

步骤b分解为:

步骤b1:去噪,小于5次的症状当作不充分的舍去,前面按照频数进行排序,因此在这里如果频数小于5次可以直接跳出该嵌套循环。

步骤b2:计算m值,即式(2.1)中的分子部分,即在存在疾病j的情况下,存在症状i的概率。

使用列表的大小作为患有该疾病的病人的数量,

m=p(xi=1|yj=1)=p(xi=1,yj=1)/p(yj=1)=c(xi=1,yj=1)/c(yj=1),其中c表示频数,这里计算概率以症状和疾病出现的频次计算,用极大似然估计的方法,认为概率值即为频数值。

步骤b3:计算n值,即式(2.1)中的分母部分,即在没有疾病j的情况下,存在症状i的概率。

这里计算概率主要以症状和疾病出现的频次计算,得出以下转换公式

n=p(xi=1|yj=0)=p(xi=1,yj=0)/p(yj=0)=c(xi=1,yj=0)/c(yj=0)

步骤b4:在计算时,使用简化的拉普拉斯平滑,防止c(xi=1,yj=0)=0的情况,防止n=0,下一步中计算会溢出的情况。

步骤b5:将求出的m,n取对数,相减进行计算,得出的结果即是想要求得的重要性衡量标准(impt)。

模块三:关系图谱构建模块

这部分是将权重降序排序然后将结果存入文件,主要分为两个步骤:

步骤a:权重降序排列并将计算好的因果关系依次存入文件。

步骤b:将关系知识图谱写入文件。

步骤a可分解为:

步骤a1:将weight字典按值降序排列。

步骤a2:在top-diags里找到疾病中文名映射,将再后续代码为格式化输出,每一个疾病输出为一个文件。

3、基于noisyor模型的实体关系学习

3.1、noisyor在构建医学知识图谱中的假设:

noisyor模型的一个核心假设是效应独立性假设。这个假设是过于简单化的,因为在多种疾病共同发生的情况下症状的表现可能与每种疾病下分别产生的表现非常不同。

通过使用最大似然估计来学习模型参数并从条件概率分布中推导出重要性度量,我们不对疾病的先验分布p(y1,...,yn)做出假设。这是区分noisyor与朴素贝叶斯的一个重要的点,它隐含地认为疾病是独立的。在本研究考虑的环境设置中,疾病当然不是独立的。例如,鉴于患者往往表现出很少的疾病,一种疾病的存在通常会降低其他疾病的可能性。

noisyor是一种条件概率分布,描述父节点影响子节点状态的因果机制。在本文提出的构建医学知识图谱的方法中,属于父疾病节点影响其子症状节点表现的机制。在一个确定性的无“噪声”环境中,潜在疾病的出现总是会导致其症状被观察到,并且如果一个症状的任何一种父疾病“出现”,则可以观察到该症状。例如,如果患者感染“流感”或患有“单核细胞增多症”,则会“发烧”。

然而,在现实生活中,这个过程远没有确定性,这就是“噪声(noisy)”部分出现的地方:即使患有“流感”,患者可能不会出现“发烧”。还有,“发烧”的出现可能既不是因为“流感”也不是因为“单核细胞增多症”。noisyor通过引入故障和泄漏概率来处理过程中的固有“噪声”。

3.2、noisyor模型中涉及到的公式:

3.2.1公式一:

症状出现的概率:

该概率计算公式中出现的几个参数定义:

yj:出现的疾病。

fij:疾病yj出现但其子xi症状不会出现的概率。

xi:子症状。

li:泄漏概率,表示即使一个症状的全部父疾病都没有出现的情况下该症状出现的概率。

3.2.2公式二:

noisyor模型选取的重要性衡量(impt):

imptnoisy-or=1-fij(3.2)

选择这个公式作为重要性衡量是因为我们认为更高的重要性意味着这种疾病更可能出现相应的症状。考虑疾病决定性地导致症状出现的情况。在这个无“噪声”的环境设置中,当流感“出现”时,症状发热总是“出现”,使得故障概率fij=0,并且我们的重要性衡量值imptnoisy-or=1。因为我们希望在“发烧”和“流感”之间有一条边,所以这很直观。相反,如果对于一个疾病而言一个症状从未发生过,则相应的故障概率为1,重要性度量为0。

根据对noisyor在本文应用场景中的分析,式(3.2)转化为条件概率的表达方式如式(3.3)所示。

3.3用noisyor模型构建医学知识图谱的具体步骤:

根据对本研究中noisyor模型应用的分析和impt的计算方案,给出构建疾病-症状和疾病-检查关系知识图谱的概要思路过程;如图5所示,主要分为四个步骤:

步骤a:提取每条病历中已经识别的非否定范围内的疾病、症状和检查等实体概念。

步骤b:用提取的实体形成病人-疾病,病人-症状和病人-检查等共现矩阵。

步骤c:根据共现矩阵统计所有结果并计算每对疾病-症状或疾病-检查的impt中条件概率的值,从而计算对应于每对疾病-症状或疾病-检查的重要性度量的值。

步骤d:为每种疾病形成和疾病-症状及疾病-检查的关系知识图谱。

步骤a分解为:

步骤a1:提取每条电子病历中已经识别的非否定范围内的疾病、症状和检查等实体概念。

步骤a2:以单条电子病历为数据基本单位,每条电子病历对应一位病人,并且给每个病人分配一个编号以方便接下来的工作。

步骤b分解为:

步骤b1:得出每个病人(即每条病历)同时出现的疾病、症状和检查(每条电子病历可能有多个疾病、多个症状和多项检查),从而得出整个数据集下的病人-疾病,病人-症状和病人-检查等共现矩阵。

步骤b2:以统一的简易格式存入文件,其中检查不仅包括检查还包括检查结果。

步骤c分解为:

步骤c1:根据已经存好的共现矩阵,针对每种疾病和各种症状、每种疾病和各种检查来依次统计所有结果,包括某个疾病发生的情况下各种症状同时出现的统计结果、某个疾病发生的情况下各种症状不同时出现的统计结果。

步骤c2:依据统计结果来计算各条件概率的值,从而根据式(3.3)计算impt,这实际就是采用最大似然估计的原理估计模型的参数。

步骤d分解为:

步骤d1:通过noisyor模型计算了每种疾病对应于每种共现的症状或检查的impt,从而度量出了每个疾病父节点及其症状子节点、检查子节点之间的因果关系的大小。

步骤d2:针对每种疾病,按降序排列每个共现症状或检查的权重值(即impt值),最后将排序的结果按指定格式存入文件中从而形成初步的关系知识图谱。存储文本格式如下:

疾病-症状:疾病|症状|权重

疾病-检查:疾病|检查|检查结果|权重。

3.4用noisyor模型构建医学知识图谱的算法实现:

算法实现主要分为数据读取和处理、数据统计和impt计算以及关系图谱构建三大模块。

模块一:数据读取和处理模块

这部分主要是读取实体共现文件到内存中,分为两个步骤:

步骤a:读取疾病集合。

步骤b:依次遍历每个疾病,针对每种疾病,读取病人-疾病共现。

模块二:数据统计和impt计算模块

这部分主要是统计结果并计算朴素贝叶斯(nb)的重要性衡量标准(impt),主要分为两个步骤:

步骤a:读取病人-症状共现并做结果统计,统计疾病-症状共现和不共现。

步骤b:将统计的疾病-症状共现次数进行排序,之后针对每对疾病-症状进行权重的计算。

步骤b分解为:

步骤b1:运用non_symp_dict字典,如果症状在non_symp_dict字典里,计算m,相当于式(3.3)中第二项分子部分,运用疾病和病症出现的频数来计算相关条件概率,即在疾病出现的情况下,病症不出现的概率

m=p(xi=0|yj=1)=p(xi=0,yj=1)/p(yj=1)=c(xi=0,yj=1)/c(yj=1)。

步骤b2:计算n,相当于式(3.3)中第二项的分母部分,运用病症和疾病出现的频数来计算条件概率,即在疾病没出现的情况下,病症不出现的情况n=p(xi=0|yj=0)=p(xi=0,yj=0)/p(yj=0)=c(xi=0,yj=0)/c(yj=0)=(c(yj=0)-c(xi=1,yj=0))/c(yj=0)。

步骤b3:运用简化的拉普拉斯平滑,以防止下一步的溢出。

步骤b4:如果症状不在non_symp_dict字典里,相当于non_symp_dict[k]==0,则n=1,作为一个单独的特殊情况计算。

步骤b5:用1减去m和n的比,得出noisyor的重要性衡量标准,即impt=1-p(xi=0|yj=1)/p(xi=0|yj=0)。

模块三:关系图谱构建模块

这部分是将权重降序排序然后将结果存入文件,主要分为两个步骤:

步骤a:权重降序排列并将计算好的因果关系依次存入文件。

步骤b:将关系知识图谱写入文件,获得构建完成的智慧医疗图谱。

最后应说明的是:以上所述的各实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或全部技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1