一种基于NLP的心血管疾病病历结构化系统

    专利查询2022-07-07  182


    一种基于nlp的心血管疾病病历结构化系统
    技术领域
    1.本发明涉及自然语言处理及深度学习领域,尤其涉及一种基于nlp的心血管疾病病历结构化系统。


    背景技术:

    2.随着我国老龄化和城市化进程加快,各种先进的医疗器械和检查手段不断应用到临床中,降低了我国院内的心血管病患者死亡率,但心血管病(cvd)等慢性疾病的患病率仍处于持续上升期。同时随着互联网技术的迅速发展以及信息技术在医疗领域的广泛应用,医疗数据呈指数增长,心血管疾病病例数据也大量累积。医学文本在医疗数据中占据着重要地位,其包括如电子病历、医疗文献、医患对话等大多为非结构化的文本信息。大量的临床医学信息以非结构化(或半结构化)文本形式存在于病历文本中,因此需要进行病历结构化。通过自然语言处理(natural language processing,nlp)将医学病历进行结构化,转化为包含重要医学信息的结构化数据,减轻医疗工作者在繁复文本工作上的负担,并从这些结构化的数据中发现有用医学信息,从而提高医疗系统的运行质量,减少运行成本,从而突破制约医院数字化的瓶颈,提升医院的信息化程度,为医疗大数据平台建立、临床科研、诊疗辅助等方面提供数据基础。
    3.近年来,大数据及深度学习的迅猛发展,为自然语言处理在病历结构化的应用提供了许多新理论基础。一种以病人为中心的病历结构化存储设计方法(杜金莲,王安,苏航,金雪云,王丹.一种电子病历结构化数据组织方法及实现系统[p].北京市:cn113066546a,2021-07-02.),其细化了电子病历信息,并引入时间概念,但其只针对粗粒度信息进行结构化,不具有细粒度实体抽取的能力。实体识别模型训练、电子病历处理方法、系统及设备引入基于深度学习的命名实体识别方法(郑涛,陈珊黎,丁海明,司丹丹,孙孝坤,胡豪.实体识别模型训练、电子病历处理方法、系统及设备[p].上海市:cn113435200a,2021-09-24.),但其在实际工业医学病历结构化应用场景中,会面临如下问题:
    [0004]
    1.方法或系统不可解耦,其主要原因是采用的方法或系统直接采用端到端处理,而非分模块处理,从输入到输出完全使用“黑盒”的机器学习或深度学习模型。由于医学领域的敏感性,需明确每一模块或环节的输出,对个别错误可追溯,不可解耦会极大降低方法或系统的可信度和普适性。
    [0005]
    2.模型缺乏专有领域知识,泛化迁移能力不足,其主要原因是通用的预训练语言模型双向自注意力语义编码器(bert)是在通用语料上进行预训练,而医学疾病领域,特别是心血管疾病领域专业术语较多,实体复杂,通用bert在该领域的语义向量学习较差,会导致实体认知不全。除此之外,通用bert基于单字符进行训练,缺乏词汇信息,对于中文词汇或实体的边界不敏感,容易导致边界错误。
    [0006]
    3.医学文本数据人工标注成本昂贵,其主要原因是医学文本的复杂性及其对标注人员的专业知识要求较高。而为了保证模型微调训练的准确性,一定规模的有监督数据是必需的。


    技术实现要素:

    [0007]
    为了克服现有医学病历结构化场景的常见问题,着眼于利用当前有限的医疗标注文本数据,解决通用语义表示模型在特定医学领域泛化迁移能力差、准确度低的问题,以及使用深度学习模型同时如何平衡系统可解耦性的问题,本发明提供了一种基于nlp的心血管疾病病历结构化系统。
    [0008]
    本发明至少通过如下技术方案之一实现。
    [0009]
    一种基于nlp的心血管疾病病历结构化系统,包括:
    [0010]
    文本格式转换模块,用于将用户上传的心血管疾病相关的病历文件,按不同格式进行转换后输出为文本文件;
    [0011]
    规则抽取模块,用于定义文本抽取规则,对转换的文本文件进行初步结构化及粗粒度的信息抽取,并输出对应的结构化文本;
    [0012]
    命名实体识别模块,基于深度学习,结合自然语言处理方法训练预训练语言模型,使用预训练语言模型对结构化文本进行序列标注,预测结构化文本中各个字符实体标签的概率,根据所述概率确定实体的起止位置和类别信息,以此抽取细粒度心血管疾病相关的医学实体信息,将预测得到的实体位置及类别信息存储于最终的结构化文件中。
    [0013]
    进一步地,文本格式转换模块对用户指定的病历文件先进行格式判别,并将文件的格式转换为后续可结构化的文本格式,具体为:
    [0014]
    若用户指定的文件为word文件,则利用python中的第三方工具库docx2txt,对word文件进行文字读取,将文件转换为python中可操作的字符串,对提取得到的字符串进行预处理后保存至txt文件中;
    [0015]
    若用户指定文件为pdf文件,需让用户指定pdf文件内容为文字版或是图片版;若为文字版,则使用第三方工具库pdfplumber对文字进行提取;若为图片版,则先使用第三方工具库fitz将pdf文件每一页提取为png格式的图片,再调用ocr工具库tesseract对图片中的文字进行提取,对提取得到的字符串进行预处理后保存至txt文件中;
    [0016]
    所述预处理包括去除多余空格、换行符及特殊符号。
    [0017]
    进一步地,抽取出的结构化信息包括患者个人信息、现病史、各类诊断信息、治疗过程、各项生化指标等,将结构化信息通过字典的格式存储于json文件。
    [0018]
    进一步地,命名实体识别模块抽取初步结构化及粗粒度的信息,具体过程为:
    [0019]
    基于在医学领域预训练后的双向自注意力语义编码器,在经过数据增强的训练集d
    da
    上结合医学领域词向量进行词汇增强调整训练,得到最后的ner抽取模型,使用最后的ner抽取模型对规则抽取模块输出的结构化文本进行编码,将编码得到的特征向量经过线性分类器,将得到的分类层向量输入到条件随机场(crf)中计算每个字符的标签转移概率,最后通过viterbi算法进行解码得到最终每个字符的标签信息,基于标签信息得到实体起止位置和实体类别。
    [0020]
    进一步地,词汇增强微调训练包括以下步骤:
    [0021]
    s1、构建字符-词汇对序列:即对于输入的中文句子sc={c1,c2,...,cn},对句子每个字符cn利用医学领域词向量的词典匹配出包含该字符的潜在词汇,将该字符和匹配得到的词汇组成词汇对s
    cw
    ,表示为:
    [0022]scw
    ={(c1,ws1),(c2,ws2),...,(cn,wsn)}
    [0023]
    其中,cn表示句子中第n个字符,wsn表示包含该字符的词汇组成的集合;
    [0024]
    s2、设计词汇适配层结构:对于句子第i个位置的字符,将医学领域双向自注意力语义编码器某一自注意力变换层编码的字符特征与该字符对应词汇的词向量集合,使用非线性变换与字符特征向量进行维度对齐后,利用注意力机制将集合中每个词向量进行融合,最后将字符特征与融合后的词向量相加并进行归一化,得到最后词汇适配层的特征输出,表示为,
    [0025][0026]
    其中,为第i个位置的字符特征,为第i个位置字符对应词汇的词向量集合,为该词向量集合的第m个单词的词向量,为最后词汇适配层的特征输出;
    [0027]
    s3、将词汇适配层输出的结合特征注入到医学领域双向自注意力语义编码器第k和第k 1层自注意力变换层之间。
    [0028]
    进一步地,采用条件随机场计算每个字符的标签转移概率,具体过程为:
    [0029]
    首先将ner抽取模型编码输出的n维特征向量h={h1,h2,...,hn},经过一个线性分类层,得到的分类层输出向量o,如下公式所示;
    [0030]
    o=woh bo[0031]
    其中,hn为特征向量h的第n维向量,wo为线性分类层的变换矩阵,bo为线性分类层的偏差;
    [0032]
    然后使用crf进行转移概率计算,即对于一个需进行标注的序列y={y1,y2,...,yn},其概率如下公式计算:
    [0033][0034]
    其中,yn表示待标注序列y的第n个字符,t表示crf的转移分数矩阵,y

    表示所有可能的标注序列,表示概率最大标注的序列在第i个位置的分类层向量,表示可能的序列在第i个位置的分类层向量,表示概率最大标注的序列在从第i-1到第i个位置的转移概率,表示可能的序列在从第i-1到第i个位置的转移概率;
    [0035]
    最后使用viterbi算法进行解码得到该标注序列的标签。
    [0036]
    进一步地,命名实体识别模块中医学领域双向自注意力语义编码器的获取,具体过程为:
    [0037]
    首先收集医学领域的医学文本,进行文本预处理,得到专有语料w
    medical

    [0038]
    然后将专有语料w
    medical
    的文本切割至适配于预训练语言模型训练的输入长度;
    [0039]
    对切割后的文本使用整词遮蔽,即对在预训练词表中的中文词汇或词级别字符,随机进行遮蔽处理,经整词遮蔽处理后得到遮蔽语言模型预训练数据集;
    [0040]
    最后在预训练数据集上对bert模型进行预训练,遮蔽语言模型任务的目标是通过语句的上下文信息预测使用被遮蔽处理的词汇或字符,从而使得原始的bert模型学习到文本的上下文双向信息,通过上述预训练得到med-bert模型。
    [0041]
    进一步地,医学领域词向量的获取,具体过程为:
    [0042]
    首先将专有语料w
    medical
    的文本切割至适配于词向量模型(word2vec)训练的输入长度;
    [0043]
    然后使用word2vec模型中的跳字(skip-gram)训练模式在切割好的文本上进行词向量训练,skip-gram的训练目标是基于核心词w来预测核心词上下文context(w)里的所有词;
    [0044]
    最后为了提高计算效率,采用负采样的优化方法,将多分类问题转化为二分类问题,只更新与当前样本相关的向量参数,经训练得到医学领域词向量。
    [0045]
    进一步地,训练集d
    da
    采用基于语言模型文本生成的数据增强方法),包括以下步骤:
    [0046]
    s1、将原始人工标注好的ner训练数据d
    ori
    进行标签线性化:将文本的字符与原始的序列标注标签进行混合,把实体每个字符对应的标签放在字符前面,形成新的线性化标注数据,记该数据为d
    man

    [0047]
    s2、从专有语料w
    medical
    中筛选出与心血管疾病相关的语料w
    cardio
    ,基于现有的医学实体词典,使用最大双向匹配法对w
    cardio
    进行远程监督标注并进行标签线性化,得到数据d
    dist

    [0048]
    s3、将数据d
    man
    与数据d
    dist
    合并为半监督线性化数据d
    semi
    ,并将半监督线性化数据d
    semi
    输入至双向lstm进行自回归的语言模型训练;
    [0049]
    s4、使用训练好的自回归的语言模型生成带有序列标注标签的线性化文本数据d
    gen

    [0050]
    s5、最后将线性化文本数据d
    gen
    进行筛选得到数据d
    filter
    ,将d
    filter
    的与线性化标注数据d
    man
    合并,同时去线性化,即转化为与原始ner标注数据d
    ori
    相同的标注格式,将长度切割至适配于医学领域双向自注意力语义编码器的输入长度,得到经过数据增强的ner数据集d
    da

    [0051]
    进一步地,所述命名实体识别中对med-bert进行微调训练,微调是在med-bert基础上添加面向下游任务的网络参数,并微调包括med-bert在内整个网络的参数,命名实体识别模块是在med-bert基础上,添加的网络参数包括词汇增强的lexicon adapter,以及最后输出拼接的一个线性分类层和一个crf层,微调阶段中med-bert的网络参数使用预训练阶段保存的模型参数进行初始化。
    [0052]
    与现有的技术相比,本发明的有益效果为:
    [0053]
    1.本发明将规则抽取和命名实体识别模块进行独立拆分,保证问题的可回溯,为后续添加其他nlp模块提供空间,对比完全端到端的系统更具可解耦性。
    [0054]
    2.本发明使用更丰富更专业的医学领域语料及wwm方法继续预训练bert模型,得到在专有领域语义向量表示更加的预训练语言模型,对比以往通用的预训练语言模型具有更多的专业知识和更强的泛化迁移能力。
    [0055]
    3.本发明采用的生成式数据增强方法,及基于动态lexicon enhanced的词汇增强方法,能在有限的人工标注数据的条件下,保证模型的高准确性,对比以往在有限数据上的数据增强方法,本发明的方法更适配于ner任务,对比以往的词汇增强方法,本发明的方法降低了引入词汇特征的信息损失,并提高了可迁移性及计算效率。
    附图说明
    [0056]
    图1为本发明一种基于nlp的心血管疾病病历结构化系统的工作流程图;
    [0057]
    图2为本发明的文件转换模块的流程图;
    [0058]
    图3为本发明的命名实体识别模块中模型的示意图;
    [0059]
    图4为本发明的命名实体识别模块中数据增强的示意图;
    [0060]
    图5为本发明的命名实体识别模块中词汇增强的lexicon adapter的示意图。
    具体实施方式
    [0061]
    下面将结合本发明实施例及附图,对本发明实施例中的技术方案进行清晰、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
    [0062]
    实施例1
    [0063]
    如图1所示,本发明提出了基于nlp的心血管疾病病历结构化系统,使用nlp相关技术,对非结构化的病历文件进行转化及抽取,得到结构化的文本文件,其包括:
    [0064]
    文本格式转换模块,如图2所示,用于将用户上传的心血管疾病相关的病历文件,按需进行格式转换,支持word或pdf文件,记转化后的输出文本文件为f;通过文件后缀名判断文件类别,若指定的文件为word文件(文件后缀为.docx或.doc),则利用python中的第三方工具库docx2txt,对word文件中的文字进行解析,转换为python中可操作的字符串;若指定文件为pdf文件(文件后缀为.pdf),需让用户指定pdf内容为文字版或是图片版,对文字版使用第三方工具库pdfplumber对文字进行提取,对图片版则先使用第三方工具库fitz将pdf每一页提取为png格式的图片,再调用ocr工具库tesseract对图片中的文字进行提取。最后对提取得到的字符串进行预处理,以去除多余空格、换行符及特殊符号。
    [0065]
    规则抽取模块,用于编写相应的正则表达式,即定义的文本抽取规则,对已转换的文本f进行初步结构化及粗粒度的信息抽取,记结构化输出json文件为j;本实施例中,抽取病历中相应的结构化信息,如患者个人信息、现病史、各类诊断信息、治疗过程、各项生化指标等,并将这些结构化文本信息保存为字典json格式文件j。
    [0066]
    根据输出文本文件,编写相应的正则表达式,如下式所示,抽取病历中相应的结构化信息:
    [0067]
    info=re.findall(pattern,text)
    [0068]
    其中,re表示python中的正则表达式模块,pattern为不同类型的结构化信息对应的规则模板,text为待抽取的文本,findall为re模块的查找函数,其可在text中查找出能够匹配pattern的所有文本。
    [0069]
    命名实体识别(ner)模块:基于深度学习,结合自然语言处理(nlp)相关方法训练模型(med-bert),使用模型对结构化文本进行序列标注,预测结构化文本中各个字符实体标签的概率,根据所述概率确定实体的起止位置和类别信息,以此抽取细粒度心血管疾病相关的医学实体信息,将预测得到的实体位置及类别信息存储于最终的结构化json文件中。
    [0070]
    如图3所示,获取领域预训练模型med-bert,并结合数据增强和词汇增强的方法进
    行微调训练,得到med-bert-le模型,使用med-bert-le模型对j的结构化文本进行语义编码,并用条件随机场(crf)进行序列标注,预测结构化文本中各个字符实体标签的概率,根据此概率确定实体的起止位置和类别信息,以此抽取细粒度心血管疾病相关的医学实体信息。如对“诊断心绞痛,冠脉三支病变,局麻下行pci术治疗”,可抽取的实体有心绞痛、冠脉三支病变及pci术,前两个实体类别为疾病与诊断,第三个实体类别为手术。将预测得到的实体位置及类别信息,以[实体,实体类别,起始位置,结束位置]的形式,如[心绞痛,疾病与诊断,2,4],存储于最终的结构化json文件中。
    [0071]
    在本实施例中,命名实体识别模块中得到医学领域预训练模型med-bert,具体包括以下步骤:
    [0072]
    1)收集医学领域相关,特别是心血管疾病相关的医学文本,进行文本预处理(包括标点符号与特殊符号格式转换,去除空格,字母统一小写),得到专有语料w
    medical

    [0073]
    2)对w
    medical
    进行长度切割,将文本切割至适配于预训练语言模型(pretrained language model)训练的输入长度;
    [0074]
    3)对切割后的文本使用整词遮蔽(whole word mask),即对在预训练词表中的中文词汇或词级别字符,以15%的选择概率随机进行遮蔽(mask)处理,为了减弱预训练和后续模型微调的不一致性,被mask的词汇或字符有80%的概率会被替换为[mask],10%的概率会被替换成另一个随机的词汇或字符,10%的概率会保留原始词汇或字符,经整词遮蔽处理后得到遮蔽语言模型(mlm)预训练数据集;
    [0075]
    4)在预训练数据集上对原始的通用bert模型进行预训练,mlm任务的目标是通过语句的上下文信息预测使用被遮蔽处理的词汇或字符,从而使得模型学习到文本的上下文双向信息,通过上述mlm训练得到med-bert模型。
    [0076]
    在本实施例中,对med-bert进行微调训练,微调是在med-bert基础上添加面向下游任务的网络参数,并微调包括med-bert在内整个网络的参数,命名实体识别模块是在med-bert基础上,添加的网络参数包括词汇增强的lexicon adapter,以及最后输出拼接的一个线性分类层和一个crf层,微调阶段中med-bert的网络参数使用预训练阶段保存的模型参数进行初始化。
    [0077]
    在本实施例中,所有带标签的ner数据集中,数据标签格式都采用bios标签,标签集合为l={b-xi,i-xi,s-xi,o},其中xi∈x,x为所有实体类别的集合,长度大于或等于2的实体,首个字符用b-xi标注,长度大于或等于2的实体第二个字符到最后一个字符用i-xi标注,单个字符即为实体的字符用s-xi标注,非实体的字符都用o标注。如“诊断心绞痛,冠脉三支病变,局麻下行pci术治疗”,标签序列为“o o b-疾病与诊断i-疾病与诊断i-疾病与诊断o b-疾病与诊断i-疾病与诊断i-疾病与诊断i-疾病与诊断i-疾病与诊断i-疾病与诊断o o o o o b-手术i-手术i-手术i-手术o o”。
    [0078]
    在本实施例中,命名实体识别中采用的条件随机场(crf)序列标注具体为,
    [0079]
    1)将微调训练后模型编码输出的特征向量h={h1,h2,...,hn},经过一个线性分类层,得到的分类层输出向量o,如下公式所示;
    [0080]
    o=woh bo[0081]
    其中,hn为特征向量h的第n维向量,wo为线性分类层的变换矩阵,bo为线性分类层的偏差。
    adapter,la),如图5所示:对于句子第i个位置的字符,将医学领域双向自注意力语义编码器(med-bert)某一自注意力变换层(transformer)编码的字符特征与该字符对应词汇的词向量集合,使用非线性变换与字符特征向量进行维度对齐后,利用注意力机制将集合中每个词向量进行融合,最后将字符特征与融合后的相加并进行归一化(layer normalization),得到最后la的特征输出,过程可表示为,
    [0099][0100]
    其中,为第i个位置的字符特征,为第i个位置字符对应词汇的词向量集合;
    [0101]
    2.3、将la输出的结合特征注入到医学领域双向自注意力语义编码器(med-bert)第k和第k 1层自注意力变换层(transformer)层之间(k的取值范围默认为1~12,取决于med-bert的总层数)。
    [0102]
    本实施例中,医学领域词向量med-wordvec的获取过程为:
    [0103]
    1)对专有语料w
    medical
    进行长度切割,将文本切割至适配于词向量模型(word2vec)模型训练的输入长度;
    [0104]
    2)使用word2vec模型中的跳字(skip-gram)训练模式在切割好的文本上进行词向量训练,skip-gram的训练目标是基于核心词w来预测其上下文context(w)里的所有词;
    [0105]
    3)为了提高词向量的训练速度,采用负采样的优化方法,即在训练中以核心词为正样本,采样部分词频较高的其他词为负样本,而对词表中的所有词进行预测,由此将原来的softmax多分类问题,转化为一个正样本和多个负样本的二分类问题,只更新当前样本(核心词w)相关的向量参数。
    [0106]
    以上所述仅为本发明的优选实施例,并非因此限制本发明的范围,凡是在本发明的发明创造构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的保护范围内。
    转载请注明原文地址:https://tc.8miu.com/read-667.html

    最新回复(0)