基于双向长短期记忆网络的医院电子病历数据挖掘

2023-07-07 03:10
计算机应用与软件 2023年6期
关键词:观点注意力向量

倪 凌

(江苏省第二中医院 江苏 南京 210000)

0 引 言

大型医院在每天诊疗过程中产生了大量的医疗数据,包括门诊病历、临床医疗数据、患者意见等[1]。这些数据大多以文本形式存储于数据库中,若通过人工对此类文本信息进行归档和分析,将耗费庞大的人力成本。随着人工智能技术的飞速发展,对医疗文本信息进行智能提取、识别和分析成为了可能[2]。在实际的临床治疗过程中,存在许多实验性质的药物治疗方案[3],一方面可通过医学指标数据判断药物的效果,另一方面也可通过电子病历观察治疗的结果,因此对电子病历进行分析具有重要的应用价值。

观点挖掘技术已经得到了深入的研究,大多关注于电影评论[4]、图书评论[5]、社交网络[6]和短新闻[6]等文本数据的挖掘,这些文本内容大多满足语法约束,且词汇的分布较为集中,传统的n-gram、CBOW和skip-gram等词嵌入模型即可较好地学习文本的特征,再通过分类器对用户观点进行标注。此类方法包括基于n-gram的Youtube观点挖掘算法[7]、基于CBOW的方面级情感信息提取技术[8]和基于skip-gram的语义聚类技术[9],这些技术均达到了令人满意的性能。

医疗领域的文本数据存在两大特殊之处:(1) 医生专家往往输入大量的专业名词和短语,而其中一部分名词和短语不符合常规的语法或语义;(2) 患者描述的文本内容非常口语化且不满足医疗系统规范,导致语义实体的边界较模糊。依然有学者对医疗文本数据完成了有效的研究,文献[10]将卷积神经网络、双向长短期记忆网络和条件随机场结合,先利用卷积层捕获词语之间的边界特征,把特征传递给长短期记忆网络进行训练和预测,再由条件随机场模型对序列进行标注,该方法对临床文本的复合实体识别具有突出的优势。其他针对医疗文本的研究大多针对英文文本,如基于概率模型的生物医学文本分析[11]和基于频繁项集挖掘的医学自动摘要技术[12],而中文与英文的语义本体之间存在较大的差异,因此很难把英文文本分析技术直接应用到中文文本分析问题上。

为了进一步完善医院信息化建设的进程,对电子病历数据实现智能且高效的分析,设计基于循环神经网络的临床大规模文本数据分析算法。首先,对词嵌入模型进行修改,使其更加适合医疗领域,提高所提取方面项的性能。然后,把提取的方面项作为标记数据训练Bi-LSTM网络,双向LSTM学习词语的正向与反向方向上下文信息。以句子“吃完药后非常有精神!”为例,如果是没有注意力机制的原LSTM,那么提取的目标词语为“药物”,显然未能全面捕捉到句子的语义。本文在Bi-LSTM中设计了注意力机制学习方面项之间的长期依赖关系,包含注意力机制的LSTM所提取的目标词语则为“药物”和“精神”,这两个词能够更好地表达该句子的语义。最终通过Softmax层对方面项的情感进行标记。本文系统主要有三点贡献:(1) 设计了医疗领域名词处理技术,过滤与医疗领域相关性高的名词;(2) 通过双向长短期网络学习词语的前文、后文语义,并设计注意力机制学习目标词语之间的长期关联性;(3) 把提取的方面项作为词语的标签,与其他语法特征一起送入Bi-LSTM模型学习,提高了特征的丰富性。

1 问题模型

图1所示是一个出院患者的评价实例,患者给出的评价内容为“刘医生很有耐心,诊断精准有效”。观点对象为刘医生,方面项为服务态度和医术,两个方面项的情感极性均为正面。电子病历数据挖掘系统的目标是对病历中的文本进行分析,提取出每个方面项,并通过深度学习技术智能地识别每个方面项的观点(情感极性)。

图1 医疗文本观点的本体划分

2 总体框架与相关技术设计

本文提出一个两步骤的方法来实现文本的方面项提取,流程如图2所示。第1步提取细粒度名词或短语,第2步借助临床医疗语料库对细粒度名词进行过滤和重组。

图2 临床文本数据方面级观点识别的算法流程

2.1 提取方面项

电子病历包含大量的医学名词和短语,采用Stanford Parser的chinese-distsim.tagger模块工具[13]提取中文的方面项。该工具在处理不符合语言规范的文本内容时错检率和漏检率均较高,例如:“吃了感冒药第二天感觉好了很多”,Stanford Parser的分割结果为感冒//药//好。该句子的方面项应该是“感冒药”,但Stanford Parser把“感冒药”识别成了两个方面项“感冒”和“药”。因此Stanford Parser生成的POS标记名词无法准确地识别语义层面的名词和短语,本文对Stanford Parser进行了扩展,提高对医疗文本方面项提取的效果。

采用Stanford Parser的chinese-distsim.tagger模块工具将句子分解,标注每个名词的细粒度token,将这些细粒度名词称为潜在方面项。以“吃了感冒药第二天感觉好了很多”为例,Stanford Parser处理后的结果为“吃了(VB)|感冒(NNP)|药(NNP)|第二天(DT)|感觉(VB)|好了(JJ)/很多(RB)”,具体如图3所示。

图3 Stanford Parser细粒度token标注实例

2.2 医疗领域名词处理

上一部分提取了所有文本的潜在方面项,其中一些方面项与医疗领域无关。例如:“病人是南京大学的一名学生”,潜在方面项“大学”与医疗领域的相关性较低,因此设计了方面项过滤技术排除与医疗领域不相关的潜在方面项。图4所示是医疗领域名词处理的流程,利用收集的临床医疗语料库训练词嵌入模型Word2Vec[14]或者GloVe[15],再利用训练的模型把输入文本转化成向量形式。

图4 医疗领域名词处理的流程

首先计算输入文本A中所有潜在方面项ni词wi的词频fi,把词频较低的名词删除,根据预处理实验的结果,将过滤不相关词的词频阈值设为(lenth/30),其中lenth为文本的句子数量。基于剩余的名词建立频繁词集W和词频集F,然后采用余弦相似性度量名词与语料库之间的语义相似性,相似性越高说明该名词与医疗领域的相关度越高。we(ni)与we(D)的相似性定义为:

(1)

式中:we(ni)表示词wi的权重,we(D)=1表示医疗领域预分配的权重。

3 基于Bi-LSTM的观点识别算法

3.1 句子标记

3.2 特征提取

采用词嵌入提取方面项特征,采用POS标注提取观点特征。

(1) 方面项特征提取:Word2vec是构建连续词向量表示的常用方法,Word2vec包括Skip-gram和CBOW两个模型。通过预处理实验训练Skip-gram和CBOW两个模型,最终两个模型的超参数选定如下:向量维度D为300,上下文窗口为20,negative_sample_size为10,下采样值为1×e-3,学习率为0.05。Skip-gram和CBOW为每个词生成一个300维的向量。GloVe模型的超参数选定如下:向量维度D为200,窗口大小为15,verbose参数为2,最大迭代次数为45。

(2) 观点特征提取:首先把输入句子S={X1,X2,…,XT}表示成token序列,例如:“感冒”是第232个词,那么pv等于232,将句子表示为索引序列ps=[pv(X1),pv(X2),…,pv(XT)]。设wt表示第t个词在句子中的嵌入向量,将wt和Xi间的关系定义为:wt=E[pv(Xn)],将输入句子表示为词嵌入向量的序列W={w1,w2,…,wT}。

由于方面项大多为名词,所以将POS标注作为每个词Xi的附加特征。采用独热编码将POS标注编码成K维向量,再使用Stanford POS标注器把POS向量编码成6维的二值向量。假设输入句子每个词的POS标注向量为P={p1,p2,…,pT},那么最终输入句子每个词的特征向量定义为:

X={x1,x2,…,xT}=

{(w1,p1)T,(w2,p2)T,…,(wT,pT)T}

(2)

3.3 Bi-LSTM的网络结构

将式(2)的序列传入Bi-LSTM,提取句子的方面项。图5所示是包含注意力机制的Bi-LSTM网络结构。

图5 Bi-LSTM网络的拓扑结构

Bi-LSTM的嵌入层参数dropout设为0.5以防止过拟合。编码器读入序列X学习隐藏层响应H,将时间步t输入词在Bi-LSTM中的隐藏响应向量ht表示为:

ht=bi_LSTM(ht-1xt;θen)

(3)

式中:ht-1为上一个状态的隐藏层激活;xt为输入数据;θen为网络参数集。

bi_LSTM+(ht-1,xt;θen)⊕bi_LSTM-(ht-1,xt;θen)

(4)

Bi-LSTM网络从时间步t-1到时间步t的更新过程可建模为:

it=sigmoid(Wi[ht-1,xt]+bi)

(5)

ft=sigmoid(Wf[ht-1,xt]+bf)

(6)

ot=sigmoid(Wo[ht-1,xt]+bo)

(7)

(8)

(9)

ht=ot⊙tanh(ct)

(10)

由于句子每个词对观点挖掘的重要性不同,并且句子不同方面项之间存在关联性,常规的Bi-LSTM网络无法识别词的重要性。因此为Bi-LSTM增加注意力机制,通过该机制区分每个词对观点感情的影响,然后将词向量及其权重组成一个密集向量。图6所示是所设计注意力机制的结构。

图6 实现注意力机制的结构

假设在时间步t输入注意力机制的句子为X={x1,x2,…,xT},Bi-LSTM隐藏层响应ht传入前馈网络,经过注意力机制处理,产生的解码响应st可定义为:

st=f(st-1,yt-1,ct)

(11)

式中:st-1为上一个时间步的解码响应;yt-1为上一个时间步的输出;ct为上下文向量。

解码器网络根据上下文向量ct和句子X预测下一个时间步的标签yt,然后以相同的方式预测之前的标签序列[y1,y2,…,yt-1]。

上下文向量ct的计算方法为:

(12)

式中:αti={αt1,αt2,…,αtT}为注意力权重。

假设网络的输入为st-1和hi,前馈网络Bi-LSTM计算出注意力能量集eti:

eti=Bi_LSTM(st-1hi)

(13)

假设激活函数为tanh(),方面项嵌入向量为eva,权重矩阵为W和U,那么注意力能量集eti可计算为:

eti=eva·tanh(Ust-1Whi)

(14)

目标序列的联合概率可定义为:

(15)

将每个词概率最高的标注作为Bi-LSTM预测的IOB2标注,每个时间步t预测的标注作为一个情感分类,将最小化分类交叉熵损失函数H()作为训练网络的代价函数:

(16)

式中:qi为词的IOB2标注;pt为期望概率分布;K={I,O,B};pt(k)∈{0,1};qt(k)∈[0,1]。

注意力机制输出第i个标签的概率,再经过softmax函数计算注意力的权重ati,计算方法为:

(17)

4 实验与结果分析

编程环境为Java JDK 1.6,软件环境为Windows 10操作系统。PC处理器为i7-10750H,主频为2.60 GHz,内存大小为8 GB。

4.1 实验数据处理

在江苏省第二中医院的数据库中收集了500份临床电子病历和500份门诊病历,使用NLTK工具箱[17]对句子进行分割和标点符号预处理。由助理医师对每份病历的方面项和情感类型进行标注,最终共产生约30 000个不同词汇,这些词汇作为医疗领域语料库,用于训练Skip-gram、CBOW和GloVe三个词嵌入模型。采用五折交叉检验方法完成验证实验,随机选择800份病历作为训练集,剩下的200份病历作为测试集。

4.2 性能评价标准

采用三个常用指标评价观点挖掘系统的性能,分别为精度P、召回率R、F1-measure。

精度P定义为真正例数量占真正例和假正例总和的比例,计算公式为:

(18)

式中:TP表示真正例数量;FP表示假正例数量。

召回率R定义为真正例数量占真正例和假反例总和的比例,计算公式为:

(19)

式中:FN表示假反例数量。

F1-measure定义为精度与召回率的调和平均值,计算公式为:

(20)

4.3 参数实验

式(1)计算的相似性值是过滤医疗领域相关名词的关键参数,因此首先通过实验观察不同相似性阈值对医疗观点识别精度的影响,将余弦相似性阈值分别取值0.65、0.7、0.75、0.8、0.85,结果如图7所示。Skip-gram与CBOW两个词嵌入模型的最优相似性阈值为0.75,GloVe模型的最优相似性阈值为0.8。当相似性阈值较小时,数据集中包含了较多与医疗领域不相关的方面项,而这些方面项对Bi-LSTM网络产生干扰,导致Bi-LSTM的精度下降。当相似性阈值较大时,一些与医疗领域相关的方面项被误删,导致了Bi-LSTM的精度下降。下文实验将Skip-gram与CBOW两个模型的相似性阈值设为0.75,GloVe模型的相似性阈值设为0.8。

图7 不同相似性阈值对观点识别精度的影响结果

4.4 对比实验分析

目前尚未出现专门针对医疗领域观点挖掘的有效技术,大多是针对电影评论、图书评论等日常生活文本的观点挖掘技术,因此选择了5个观点挖掘算法与本文算法完成对比实验。所选取的5个对比算法均支持不同的语料库,分别为基于多特征融合和LSTM的方面级观点挖掘算法LSTM-CRF[18]、基于双向LSTM的两分类方面级观点挖掘算法BiLSTM[19]、基于循环神经网络的评论观点挖掘算法RNN[20]、基于双向卷积门控循环单元的观点挖掘算法C-GRU[21]、基于自然语言多语法特征融合的观点挖掘算法NLP[22]。其中BiLSTM与RNN仅支持两个情感分类,即积极(positive)和消极(negative),其他算法均支持三个情感分类,即积极(positive)、消极(negative)和中性(neutral)。LSTM-CRF先对每个词进行语法标注,提取上下文感知的特征集,再通过Bi-LSTM实现对观点情感的识别,该模型在LSTM之外通过提取上下文特征实现对语义的识别,而本文算法则在LSTM内部通过注意力机制实现对上下文语义的识别,由此可观察两种策略的有效性。BiLSTM、RNN和C-GRU三个算法则是分别通过长短期记忆网络、循环神经网络和门控循环单元识别词语的上下文语义,通过这三个算法可观察不同深度学习网络的性能差异。上述5个观点挖掘算法在本文收集的医疗领域语料库上再次进行训练,在相同的实验条件下与本文算法进行比较。本文算法分别采用Skip-gram、CBOW和GloVe三种嵌入模型完成实验,分别简记为LSkip、LCB和LGl,观察不同词嵌入模型对算法性能的影响。

图8所示是不同算法的方面级观点识别精度结果,可以看出,本文算法采用GloVe词嵌入模型的性能优于Skip-gram与CBOW两个模型。深度双向C-GRU网络是一种可兼容不同语料库的观点挖掘模型,因此不仅在图书评论问题和电影评论问题上取得了理想的效果,在医疗文本挖掘领域也明显优于其他几个模型。本文算法考虑了BIO标注、词嵌入向量、POS标注,因此能够更加全面地提取每个方面项在文本中的上下文特征,再结合注意力机制能够关注于语义重要性高的方面项。此外,本文算法通过2.2节的“医疗领域名词处理”过滤了非医疗领域名词,提高了所提取方面项的专业性。

图8 不同观点挖掘算法的情感识别精度

图9所示是不同算法的方面级观点识别召回率结果,可以看出,本文算法采用GloVe词嵌入模型的召回率也优于Skip-gram与CBOW两个模型。NLP的召回率结果优于Skip-gram与CBOW两个模型下的本文算法,NLP算法具有较高的识别覆盖率。虽然C-GRU模型实现了较好的观点识别精度,但召回率略低于NLP算法。

图9 不同观点挖掘算法的情感识别召回率

图10所示是不同算法的方面级观点识别F1-measure结果,可以看出,本文算法采用GloVe词嵌入模型的性能优于Skip-gram与CBOW两个模型。NLP算法的综合识别性能优于C-GRU模型,本文算法考虑了BIO标注、词嵌入向量、POS标注,因此能够更加全面地提取每个方面项在文本中的上下文特征,再结合注意力机制能够关注于语义重要性高的方面项。此外,本文算法通过2.2节的“医疗领域名词处理”过滤了非医疗领域名词,提高了所提取方面项的专业性。

图10 不同观点挖掘算法的情感识别F1-measure

5 结 语

为了进一步完善医院信息化建设的进程,实现对临床文本数据智能且高效的分析,设计基于循环神经网络的临床大规模文本数据分析算法。首先,对词嵌入模型进行修改,使其更加适合医疗领域,提高所提取方面项的性能。然后,把提取的方面项作为标记数据训练bi-LSTM网络。最终,利用Softmax层对方面级观点的情感进行分类。本文算法考虑了BIO标注、词嵌入向量、POS标注,因此能够更加全面地提取每个方面项在文本中的上下文特征,再结合注意力机制能够关注于语义重要性高的方面项。此外,本文算法通过 “医疗领域名词处理”过滤了非医疗领域名词,提高了所提取方面项的专业性。

本文算法目前仅研究了积极、中性和消极共三种情感极性,未来将关注于细粒度的观点分析研究。借鉴推荐系统的评分方法,进一步深化医院的信息化建设。

猜你喜欢
观点注意力向量
向量的分解
让注意力“飞”回来
聚焦“向量与三角”创新题
观点
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线
业内观点
新锐观点