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

一种用于医疗问诊分离的摘要生成方法

文献发布时间:2023-06-19 19:28:50


一种用于医疗问诊分离的摘要生成方法

技术领域

本发明涉及自然语言处理技术领域,具体为一种用于医疗问诊分离的摘要生成方法。

背景技术

近年来,计算机软硬件性能的提高以及数据处理能力的不断提升,深度学习在自然语言处理、对话摘要等领域取得了长足进步与发展。深度学习是通过神经元模拟人脑进行学习的神经网络,利用学习到的特征使机器更加智能,深度学习是机器学习的重要分支。目前,主流的深度学习方法有:(1)基于多层神经元的自动编码器。(2)基于卷积与池化的卷积神经网络。(3)基于时间序列的长短时记忆网络。(4)基于概率建模的生成对抗网络。(5)基于图结构的图神经网络。(6)基于预训练模型的神经网络等。

对话摘要有助于总结整个对话的简要概述,能够更加有效地知晓对话表达的主要内容。在很多应用场景起到了举重若轻的作用,例如多人参与的会议、医患对话等。在医疗对话摘要中,重要的信息包括患者提出的问题、医生做出的诊断以及医生对患者提供的治疗方案,这些信息关键点有助于帮助有相似问题的患者提供医疗服务,同样有利于辅助医生做出合适的诊断和提供合理的治疗方案。因此,在医疗服务中,医疗对话摘要越来越受到广泛关注。然而,在以往的医疗摘要中,主要存在以下问题:(1)直接使用电子病历进行医疗摘要,忽视了医患对话之间的相互影响与作用。(2)医患对话过长并且关键信息分散其中,很难找到重要信息并分析它们。上述技术问题直接导致了生成的对话摘要准确率低的问题。

发明内容

本发明的目的是:针对现有技术中生成的对话摘要准确率低的问题,提出一种用于医疗问诊分离的摘要生成方法。

本发明为了解决上述技术问题采取的技术方案是:

一种用于医疗问诊分离的摘要生成方法,包括以下步骤:

步骤一:获取原始医患对话数据,所述原始医患对话数据包括患者向医生咨询的医疗问题以及医生向患者给出的专业诊断建议和合理的治疗方案;

步骤二:对原始医患对话数据进行信息过滤,所述信息过滤包括关于个人信息的对话以及对话轮次少于五轮的对话;

步骤三:对信息过滤后的对话数据进行句子划分,然后针对划分后的每个句子进行摘要标签标注,所述摘要标签包括患者问题描述摘要标签、医生诊断和治疗摘要标签以及其他标签;

步骤四:利用摘要标签标注后的句子训练对话摘要网络模型,得到训练好的对话摘要网络模型;

步骤五:将待识别医患对话数据中的每个句子分别输入训练好的对话摘要网络模型,得到每个句子中患者问题描述摘要标签以及医生诊断和治疗摘要标签的概率,然后选取概率最高的标签作为输出标签;

步骤六:获取所有句子对应的输出标签,将其中患者问题描述摘要标签对应的句子拼接后得到患者问题描述摘要,将医生诊断和治疗摘要标签对应的句子拼接后得到医生诊断和治疗摘要;

所述对话摘要网络模型具体执行如下步骤:

步骤四一:利用预训练模型对摘要标签标注后的每个句子进行编码,得到编码信息;

步骤四二:将摘要标签标注后的每个句子映射成记忆向量和值向量,所述记忆向量通过对编码信息进行复制得到,所述值向量由BiLSTM编码器得到;

步骤四三:根据记忆向量得到输入句子的相似度δ

其中,λ

步骤四四:通过将值向量和输入句子的相似度δ

其中,v

步骤四五:将向量ρ

α

其中,σ

步骤四六:设置一个偏差矢量,然后将话语级编码向量α

进一步的,所述步骤三中对信息过滤后的对话数据进行摘要标签标注的具体步骤为:

步骤三一:对信息过滤后的部分对话数据进行手工标注;

步骤三二:设计正则表达式覆盖手工标注的对话数据,然后利用正则表达式标注其余对话数据;

步骤三三:随机选取利用正则表达式标注的对话数据,并判断评估标注的准确率,若准确率未达到90%,则修改正则表达式,并使其覆盖出现错误的对话数据,重复这个过程,直到准确率达标;

步骤三四:利用准确率达标后的正则表达式进行标签标注,得到标签标注后的数据集。

进一步的,所述步骤四一具体步骤为:

针对摘要标签标注后的每个句子,以[CLS]为句子开头,[SEP]为句子结尾,对每个句子进行处理,并将处理后的句子利用分词词典进行ID转换,设置输入模型的长度为512,对于大于输入长度的句子,保留前512个ID,对于小于输入长度的句子,使用[PAD]补全,最后将转换后的ID输入到预训练模型中,得到编码信息,即词向量。

进一步的,所述步骤一中获取原始医患对话数据通过scrapy爬取得到。

进一步的,所述对话摘要网络模型在训练时优化器选择Adam算法。

进一步的,所述Adam算法更新公式为:

其中,t表示次数,m

进一步的,所述m

m

其中,g

进一步的,所述对话摘要网络模型在训练时,训练的轮次设置为30,容忍度设置为50,训练批次大小设置为4,学习率为1e-5,BiLSTM的隐藏层维度设置为150。

本发明的有益效果是:

本申请通过在话语层附加标记器来预测标签,然后将PADE和DOTR标记的话语进行串接,分别生成患者问题摘要和医生诊断摘要,以此生成更加准确的医疗对话摘要,可以用于医患对话系统中,有助于帮助有相似问题的患者提供医疗服务,生成准确的医疗对话摘要,同样有利于辅助医生做出合适的诊断和提供合理的治疗方案。

附图说明

图1为本申请的流程图;

图2为本申请的模型架构图;

图3为数据标注流程图;

图4为数据示例图。

具体实施方式

需要特别说明的是,在不冲突的情况下,本申请公开的各个实施方式之间可以相互组合。

具体实施方式一:参照图1具体说明本实施方式,本实施方式所述的一种用于医疗问诊分离的摘要生成方法,包括以下步骤:

步骤S1.通过爬虫获取原始训练数据。在这个步骤中,有两个子步骤,利用scrapy爬取原始医患对话数据;采用半自动方式获得医患对话文本对应的摘要标签。

步骤S11.基于scrapy爬取原始医患对话数据。本发明基于scrapy获取原始医患对话数据,对话内容大致为患者可以向医生咨询医疗问题,然后医生会向患者给出专业诊断建议以及合理的治疗方案。获得原始历史医患对话数据后,需要对对话数据进行过滤和标注。

步骤S12.采用半自动方式获得医患对话文本对应的摘要标签。对对话数据进行摘要标签标注,选择三种摘要标签进行标注:患者问题摘要标签、医生诊断和治疗摘要标签和除此之外的其他标签。

步骤S2.模型表示。在这个步骤中,有三个子步骤,基于预训练模型的编码器;记忆网络;话语编码器。

步骤S21.基于预训练模型的编码器。使用预训练模型对每个话语中token进行编码,并将一组对话的编码分层堆叠用于记忆网络。

步骤S22.记忆网络。本文将摘要任务视为话语标记过程。其中上下文信息有助于确定输出标签,对于对话中的每个话语,每次对话中的相关话语也提供有用的信息。为了利用相关话语中的信息,采用记忆网络来确定某个话语是否重要。

步骤S23.话语编码器。本文将记忆网络中得到的向量与基于预训练模型的编码器得到的向量进行融合,用于话语编码器,以顺序方式对话语表示进行建模,以此得到具有相关性的话语表示,用于标签预测。

步骤S3.模型训练和模型预测。在这个步骤中,有两个子步骤,模型训练和模型预测。

步骤S31.模型训练。构建完模型结构后,设置优化算法和超参数,使用负对数似然作为CRF的损失函数,对其最小化。

步骤S32.模型预测。针对一组医患对话文本,输入进模型中,得到患者问题描述摘要以及医生诊断和治疗方案摘要。

在步骤S1中将通过爬虫技术获取原始医患对话文本数据,并通过半自动标注的方式获得医患对话文本对应的摘要标签。

在步骤S2中将从步骤S1中获取的医患对话文本数据以及摘要标签,将一组医患对话进行预训练模型编码;将编码用于记忆网络,以此确定某个话语是否重要;然后将记忆网络的输出用于话语编码器,以此得到具有相关性的话语表示,用于标签预测。

在步骤S3中通过步骤S2的模型表示,对模型进行训练并进行模型预测。

实施例:

如图1所示,本申请包括如下步骤:

(1)基于scrapy爬取原始医患对话数据,共10985条对话数据,对话内容大致为患者可以向医生咨询医疗问题,然后医生会向患者给出专业诊断建议和合理的治疗方案。获得原始历史医患对话数据后,需要对医患对话数据进行标注,在标注之前,需要进行信息过滤,包括:(a)关于个人信息的对话。(b)图像信息。(c)音频信息。(d)没有足够对话轮次的对话。

对信息过滤之后,形成标准的历史医患对话数据,进而对对话数据进行摘要标签标注。选择了三种摘要标签进行标注:PADE(患者问题描述摘要标签)、DOTR(医生诊断和治疗摘要标签)和OTHER(其他标签)。另外,还需要对一轮对话标注患者问题描述摘要以及医生诊断和治疗摘要,患者问题描述摘要是由标签为PADE所对应的对话拼接而成,同样的,医生诊断和治疗摘要是由标签为DOTR所对应的对话拼接而成。为了提高标注效率,可以采用半自动的方式进行标注,整个标注过程如图3所示,首先需要确定初步的标注方案,然后,对2000条对话数据进行人工标注,对于有歧义的对话数据,改进标注方案,保证2000条对话数据的标注没有歧义;之后使用程序来自动标记其余对话,程序使用正则表达式覆盖手工标记的2000条对话数据,应用这些正则表达式标注其余对话;随后,进行抽样二项检验,随机选取500条自动标注的对话数据,来评估标注的正确性;如果准确率未达到90%,修改程序的正则表达式,使其覆盖出现错误的对话数据。重复这个过程,直到准确率达标。这样就得到了模型训练所需要的数据集。如图4所示是数据处理完成后的示例图。

(2)获得数据集后,构建模型架构,进行基于预训练模型的编码,构建记忆网络和话语编码器。

首先进行基于预训练模型的编码,对每个对话句子转换为用于训练的标记ID。对于每一个句子,都处理成这种形如“[CLS]句子[SEP]”,根据分词的词典将其转换为对应的标记ID,设置输入模型的最大长度为512,对于小于输入长度的句子,使用[PAD]标记补全,将标记ID输入到预训练模型中,得到第一层编码信息。

为了对输入进行建模,模型是一种分层结构,这种结构中,标记和话语由单独的编码器进行编码,并分层堆叠。在话语层附加标记器来预测标签,然后将PADE和DOTR标记的话语进行串接,分别生成患者问题摘要和医生诊断摘要,为了增强模型,采用记忆网络来整合来自相关话语的信息,接下来介绍记忆网络层在模型中的作用。

将摘要任务作为一个话语标记过程,那么上下文信息在确定标记方面具有重要的作用。对于对话中的每个话语,每个对话中的相关话语也对其提供了有用的信息,以此来确认某个特定的话语是否重要。所以记忆网络利用来自相关话语的信息来促进话语标记,在这个过程中,首先将对话中所有的话语(句子)映射成记忆向量和值向量,记忆向量直接从预训练模型获得的编码(编码信息)中复制;值向量由BiLSTM编码器得到。记忆向量用于计算与输入话语的相似度,值向量携带了话语的编码信息,用于生成记忆网络的输出δ

其中,λ

其中,ρ

接下来将记忆网络中得到的向量ρ

在话语编码器部分,将话语σ

α

在分层模型顶部,标记层执行识别任务,将训练矩阵和偏差矢量用于对齐输出空间,之后,应用条件随机场算法来获得输出标签,最后,将预测为PADE和DOTR标记的话语进行串接,分别生成患者问题摘要和医生诊断摘要。

设置一个偏差矢量,然后将α

获取对话数据中所有句子对应的输出标签,将其中患者问题描述摘要标签对应的句子拼接后得到患者问题描述摘要,将医生诊断和治疗摘要标签对应的句子拼接后得到医生诊断和治疗摘要。

(3)模型训练和预测

加载预处理好的数据,设置好批次大小,使用多个GPU进行训练。需要设置训练的随机种子,用于随机初始化权值参数,所有的随机数算法在初始化阶段都需要一个随机种子,完全相同的种子每次将产生相同的随机数。

优化器选择Adam算法:Adam算法虽然收敛速度快,但是没有解决参数过拟合的问题,Adam算法的更新公式如下:

设置超参数:训练的轮次设置为30,容忍度设置为50(当在验证集上的指标50次不再增加,就停止训练,以免过拟合),训练批次大小设置为4,学习率为1e-5,BiLSTM的隐藏层维度设置为150。使用warmup策略:基本过程为在开始训练时以很小的学习率进行训练,使得模型适应训练数据;随着训练的进行学习率慢慢变大;到了一定程度后设置的初始学习率进行训练(使得训练快速收敛);当模型学习到一定的程度,学习到的模型分布就比较稳定了。

训练模型:将训练数据通过预训练模型处理成字向量,然后经过记忆网络,利用上下文的对话中与当前句子相关的句子所包含的信息增强当前句子表征,从而实现对上下文句子信息的抽取,而后,基于当前句与其他句子的相似度,对相应值进行加权,并把加权和串联到当前句子数据的表征上,并将得到的向量输入话语编码器中,话语编码器由一个BiLSTM构成,BiLSTM的输出经过一个线性变换后,再通过条件随机场标注器对句子进行标注,得到预测结果。

模型预测:针对每一段医患对话文本,输入进模型中,经过模型计算,并通过条件随机场预测各个句子的标签,将PADE和DOTR标记的话语进行串接,分别生成患者问题摘要和医生诊断摘要。

需要注意的是,具体实施方式仅仅是对本发明技术方案的解释和说明,不能以此限定权利保护范围。凡根据本发明权利要求书和说明书所做的仅仅是局部改变的,仍应落入本发明的保护范围内。

技术分类

06120115926972