掌桥专利:专业的专利平台
掌桥专利
首页

一种粗细粒度结合的层次化ICD编码方法和系统

文献发布时间:2023-06-19 19:27:02


一种粗细粒度结合的层次化ICD编码方法和系统

技术领域

本发明涉及ICD编码技术领域,特别涉及一种粗细粒度结合的层次化ICD编码方法和系统。

背景技术

国际疾病分类(ICD)是一套编码系统,它根据疾病的某些特征对疾病进行分类,并用编码方法表示。把疾病进行编码,可以方便的表示患者就诊期间的诊断和流程。该编码可用于临床研究和医疗保健,如流行病学研究和服务账单。

人工进行ICD编码时,要求编码人员阅读繁杂冗长的电子病历并进行标注,导致有很多错误标记。因此,越来越多的研究开始关注使用机器学习的方法进行自动ICD编码。自动ICD编码之所以困难,有两个原因:电子病历文本长度很长,其中有大量无用的噪声信息,因此很难提取特征。例如,在MIMIC III数据集中,平均文本超过1500个单词,而这些单词中绝大部分信息是无用的;ICD代码数量繁多,并且存在严重的长尾问题,大量常见病占据了医学文本,而绝大多数罕见病很少出现在数据集中。

现有的技术方案根据输入语料的不同可以大致分为两种:(1):将ICD编码看作多标签分类问题,把电子病历文本作为输入语料,使用传统机器学习方法或深度学习方法,训练N个二分类器得到结果。这其中就包括传统的机器学习方法(如SVM、LR等方法),以及深度学习方法,例如RNN和CNN。基于CNN的深度学习模型使用单个或者多个固定大小的卷积滤波器来捕获电子病历文本中与ICD代码相关的文本片段,但是存在难以选择最佳窗口等问题。另一类深度学习模型基于RNN来处理电子病历文本的依赖,但是由于信息传输能力有限和梯度消失等问题导致对于长文档来说,RNN的表达能力有限。而由于电子病历中的疾病存在严重的长尾分布,导致罕见疾病的分类器因为训练样本不够而导致泛化能力不强。(2):使用医生诊断作为输入语料,将ICD编码问题视作多分类问题或序列生成问题,使用传统的机器学习或者深度学习方法构造多分类器或编码解码器。一些工作使用传统机器学习的分类器,K临近算法,贝叶斯独立分类器构建N分类器。但是由于长尾分布,导致罕见病的准确率不高。一些工作认为该任务是一个序列生成问题,即从医生诊断生成ICD代码,使用Seq2Seq模型,使用Bi-GRU作为编码器和解码器,结合Attention机制进行ICD代码生成。序列生成在粗粒度生成时表现优秀,但是随着粒度进一步细分会导致更多的错误,而且医生诊断文本中的信息不如电子病历文本完整,在医生诊断中使用缩写词和同义词等情况下,也会对使用单一医生诊断的模型产生影响。

发明内容

针对现有技术中ICD编码的层次化信息利用不足以及细粒度ICD编码时容易出现错分导致ICD编码精度较低的问题,本发明提出一种粗细粒度结合的层次化ICD编码方法和系统,通过使用电子病历文本和医生诊断两种语料进行层次化ICD编码,提高ICD编码精度。

为了实现上述目的,本发明提供以下技术方案:

1一种粗细粒度结合的层次化ICD编码方法,包括以下步骤:

S1:输入电子病历文本和对应的疾病标准名称;

S2:获取电子病历文本中的医生诊断,再对电子病历文本、医生诊断和疾病标准名称进行预处理;

S3:粗粒度筛选:对预处理的医生诊断进行第一词向量构建,并将第一词向量进行第一编码和第一解码,得到ICD编码的前三位,获取对应的ICD编码和疾病标准名称,作为候选项;

S4:细粒度筛选:将经过预处理的电子病历文本和S3输出候选项中疾病标准名称转换为对应的第二词向量序列并进行第二编码,再对第二编码结果进行相似度评分;

S5:将相似度评分最高的ICD编码作为输出结果。

优选地,所述S2中,预处理步骤为:使用jieba分词脚本对电子病历文本、医生诊断和疾病标准名称进行分词、去除停用词和去除无用噪声。

优选地,所述S3包括:

S3-1:构建第一词向量,将经过预处理的医生诊断转化为词向量序列E=e

S3-2:将词向量序列E输入第一编码器进行编码,得到特征向量;

S3-3:将编码器输出的特征向量输入第一解码器进行解码,输出ICD编码的前三位;

S3-4:获取ICD编码的前三位之后,把对应的所有ICD编码和对应的疾病标准名称抽取出来作为候选项。

优选地,所述S3-2中,第一编码器由6个相同的编码层构成,每一个编码层包括两个子层:自注意力层和位置感知前馈网络层。

优选地,所述S3-3中,第一解码器包括自注意力层和位置感知前馈网络层和第三子层,第三子层对第一编码器的输出执行多头关注,输出ICD编码的前三位。

优选地,使用交叉熵损失函数来更新解码器,更新方式如下:

公式(1)中,LOSS表示交叉熵损失函数;T表示解码的步数总量;

优选地,所述S4包括:

S4-1:构建第二词向量,将经过预处理的电子病历文本和S3中候选项中疾病标准名称步骤转换为对应的第二词向量序列

S4-2:对第二词向量序列e使用第二编码器进行编码,输出编码结果;

S4-3:使用多跳注意力机制网络从编码结果中获取电子病历文本和疾病标准名称的特征向量;

S4-4:对电子病历文本和疾病标准名称的特征向量进行相似度评分。

优选地,所述S4-2中,第二编码器的编码过程为:

公式(2)中,

优选地,所述S4-3中,相似度评分的计算公式为:

公式(3)中,sim(r,icd)表示电子病历文本和疾病标准名称的特征向量的相似度评分;r代表电子病历文本;icd代表疾病标准名称;K表示跳注意力网络的跳数;

Loss表示损失函数;M表示超参数,用于将正确的ICD编码和不正确的编码隔离开;icd

本发明还提供一种粗细粒度结合的层次化ICD编码系统,包括:

数据预处理模块,用于从电子病历文本获取医生诊断,并对电子病历文本、医生诊断和疾病标准名称进行预处理;

ICD编码粗分模块,用于对预处理后的医生诊断进行第一词向量序列构建,并进行编码和解码,得到ICD编码的前三位,之后将属于该大类下的ICD编码和对应的疾病标准名称抽取出来作为候选项;

ICD编码细分模块,用于对预处理后的电子病历文本和疾病标准名称进行第二词向量序列的构建,再将第二词向量序列输入多跳注意力网络后进行相似度评分,选取分数最高的作为ICD编码结果。

综上所述,由于采用了上述技术方案,与现有技术相比,本发明至少具有以下有益效果:

本发明通过使用有丰富信息的医生诊断作为粗分类的输入文本,进行ICD代码粗粒度分类,可以得到很高的准确率,同时也能排除到大部分完全不相似的ICD代码,也可以在一定程度上缓解长尾问题;

再使用多跳注意力网络关注到同一大类下相似疾病的不同部分,并加强其中权重,能够在最后多次相似度打分中得到更高的分数,实现ICD细粒度编码的精确匹配机制,进一步提高了ICD自动编码的准确性。

附图说明:

图1为根据本发明示例性实施例的一种粗细粒度结合的层次化ICD编码方法示意图。

图2为根据本发明示例性实施例的一种粗细粒度结合的层次化ICD编码系统示意图。

具体实施方式

下面结合实施例及具体实施方式对本发明作进一步的详细描述。但不应将此理解为本发明上述主题的范围仅限于以下的实施例,凡基于本发明内容所实现的技术均属于本发明的范围。

在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。

如图1所示,本发明提供一种粗细粒度结合的层次化ICD编码方法,具体包括以下步骤:

S1:输入电子病历文本和对应的疾病标准名称;

S2:获取电子病历文本中的医生诊断,再对电子病历文本、医生诊断和疾病标准名称进行预处理。

本实施例中,利用正则表达式切分病历文本中的医生诊断。

预处理步骤为:使用jieba分词脚本对电子病历文本、医生诊断和疾病标准名称进行分词、去除停用词和去除无用噪声。

S3:粗粒度筛选:对预处理的医生诊断进行第一词向量构建,并将第一词向量进行第一编码和第一解码,得到ICD编码的前三位,将同属于该ICD编码前三位下所有ICD编码和疾病标准名称作为候选项。

S3-1:构建第一词向量,Word Embedding使用经过数据集预训练的GloVe向量进行词向量化,将经过预处理的医生诊断W=[w

S3-2:将词向量序列E输入第一编码器(Transformer encoder网络)中进行编码,得到特征向量。

本实施例中,第一编码器由6个相同的编码层构成,每一个编码层包括两个子层:自注意力层和位置感知前馈网络层。

S3-3:将编码器输出的特征向量输入第一解码器进行解码,输出ICD编码的前三位。

本实施例中,第一解码器与第一编码器结构类似,除了自注意力层和位置感知前馈网络层之外,第一解码器还插入第三个子层,第三个子层对第一编码器堆栈的输出执行多头关注,输出ICD编码的前三位。

本实施例中,使用交叉熵损失函数来更新解码器,更新方式如下:

公式(1)中,LOSS表示交叉熵损失函数;T表示解码的步数总量;

S3-4:获取ICD编码的前三位之后,把属于ICD编码的前三位对应的大类下的所有ICD编码和对应的疾病标准名称抽取出来作为候选项。

S4:细粒度筛选:将经过预处理的电子病历文本和S3中候选项中的疾病标准名称转换为第二词向量序列并进行第二编码,再对第二编码结果进行相似度评分。

S4-1:构建第二词向量,Word Embedding使用经过数据集预训练的GloVe向量进行词向量化,将经过预处理的电子病历文本和S3中候选项中的疾病标准名称步骤分别转换为第二词向量序列

S4-2:对第二词向量序列e使用第二编码器(Bi-LSTM)进行编码,编码过程如下所示:

/>

公式(2)中,

前向传播;

S4-3:使用多跳注意力机制(MultiHeadAttention)网络获取电子病历文本和疾病标准名称的特征向量,具体计算如下式:

公式(3)中,

是一个单独的记忆向量,用来指导下一次注意的步骤,递归方式和初始值/>

公式(4)中,

S4-4:使用余弦相似度sim来对电子病历文本和疾病标准名称的特征向量进行相似度评分,损失函数使用铰链损失函数:

Loss=max{0,M-sim(r,icd

公式(5)中,sim(r,icd)表示电子病历文本和疾病标准名称的特征向量的相似度评分;r代表电子病历文本;icd代表疾病标准名称;K表示跳注意力网络的跳数;

Loss表示损失函数;M表示超参数,用于将正确的ICD编码和不正确的编码隔离开;icd

S5:将相似度评分最高的ICD编码作为输出结果。

本发明通过使用有丰富信息的医生诊断作为粗分类的输入文本,进行ICD代码粗粒度分类,可以得到很高的准确率,同时也能排除到大部分完全不相似的ICD代码,也可以在一定程度上缓解长尾问题。

再使用多跳注意力网络实现ICD细粒度编码的精确匹配机制。相比以往的模型,本系统能够关注到同一大类下相似疾病的不同的部分,并加强其中权重,能够在最后多次相似度打分中得到更高的分数,进一步提高了ICD自动编码的准确性。在细分的阶段,以同属于I10下的“高血压I”“高血压Ⅱ”“高血压Ⅲ”为例,经过多跳注意力网络,可以关注到更多“I”,“Ⅱ”,“Ⅲ”的信息,有效的区分开相似疾病,减少细粒度下相似ICD代码的错分问题。

基于上述方法,如图2所示,本发明还提供一种粗细粒度结合的层次化ICD编码系统,包括数据预处理模块、ICD编码粗分模块和ICD编码细分模块;数据预处理模块的输出端和ICD编码粗分模块的输入端连接,ICD编码粗分模块的输出端和ICD编码细分模块的输入端连接,ICD编码细分模块输出ICD编码结果。其中,

数据预处理模块,用于从电子病历文本获取医生诊断,并对电子病历文本、医生诊断和疾病标准名称进行预处理;

本实施例中,利用正则表达式切分病历文本中的医生诊断。

预处理步骤为:使用jieba分词脚本对电子病历文本、医生诊断和疾病标准名称进行分词、去除停用词和去除无用噪声。

ICD编码粗分模块,用于对预处理后的医生诊断进行第一词向量序列构建,并进行编码和解码,得到ICD编码的前三位,之后将属于该大类下的ICD编码和对应的疾病标准名称抽取出来作为候选项。

ICD编码细分模块,用于对预处理后的电子病历文本和疾病标准名称进行第二词向量序列的构建,再将第二词向量序列输入多跳注意力网络后进行相似度打分,选取分数最高的作为ICD编码结果。

本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

技术分类

06120115918364