结合类别关键词与注意力机制的药物相互关系抽取模型
2021-02-05IKANovitaDewi蔡晓玲刘晓锋董守斌
IKA Novita Dewi 蔡晓玲 刘晓锋 董守斌
(华南理工大学 计算机科学与工程学院,广东 广州 510006)
药物相互关系(DDI)是指患者在一定时间内先后服用多种药物而产生的复合反应,通过增加药物的血浆浓度加剧效用,或者降低其血浆浓度减弱有效成分。中老年患者由于自身基础疾病较多,大部分需要同时服用5种以上药物,而一些不良药物反应可能产生毒副作用,甚至危害患者的生命安全[1]。
大多数研究者采用基于核方法的机器学习方法进行DDI的提取。Chowdhury等[2]探讨多核融合方法对DDI提取的影响,包括浅语义核、依赖树核、卷积核和图核,不同核代表了句子不同维度的特征信息,根据特征重要性赋予不同的权重,最后用线性核将这些核组合在一起,对句子进行分类。
药物关系抽取的深度模型一开始以卷积神经网络(CNN)为主体结构,Liu等[3]最先应用CNN进行DDI提取,通过不同窗口大小的卷积核提取局部特征,最大池化层对特征进行压缩提取,最后全连接层将特征向量合并转换成类别数量的维度,通过Softmax层输出每个句子的类别。CNN仅对相邻单词执行操作,而忽略了单词之间的长距离依赖关系,因此出现了基于循环神经网络(RNN)的药物关系提取,利用RNN的循环权重来提取长距离依赖信息。文献[4- 5]均采用双向长短期记忆(LSTM)神经网络作为主体模型,将LSTM最后隐藏层输出作为句子表达式,通过Softmax进行分类。
注意力机制在药物关系提取中也有较多的应用,Zheng等[5]提出了一种药物对感知的BiLSTM(Att-BLSTM),通过计算句子中的药物对与句子中每个单词的关联关系得到药物导向的词嵌入。Zhou等[6]提出了一种位置感知注意机制的双向LSTM(PM-BLSTM),认为当句子中包含多个药物对时,应该关注更接近药物对的词。BERT是预训练语言模型,已广泛应用于各个领域。Peng等[7]在生物文献数据集上训练BERT模型,取[CLS]句子标签向量作为句子表达式进行药物关系抽取。Sun等[8]在文献[7]基础上,将单词到目标药物对的距离转化成两个吉布斯概率分布,融入到药物向量中,取得81.54%的F1值。
在对文献中的药物关系进行抽取时,因为大部分药物之间没有相互关系,所以数据中负样例较多,对正样例的关系抽取造成较大的干扰。Huang等[9]先使用二分类的支持向量机(SVM)对正负样例进行区分,再基于LSTM模型对正样例进行关系抽取。这种方法能够有效地减少负样例,但同时也减去了部分正样例。为了不造成更多的正样例损失,大部分工作采用基于规则的方法来过滤负样例。Chowdhury等[10]将药物关系抽取分为两个步骤,首先通过定义规则来区分正负样例,再通过SVM-Light-TK进行具体的药物关系分类。
为了提高不同类别样例的区分度和模型的分类效果,本文提出了结合类别关键词和注意力机制的DDI抽取模型。首先基于卡方检验和文档频率获取每个类别的关键词,作为类别先验知识,并在预训练BERT模型中通过加入关键词与药物对的位置编码来增加样例的差异性;然后通过注意力机制学习关键词与句子中其他词的分布信息,通过关键词与其他词的共现信息来提高模型分类效果;此外,针对药物关系抽取任务中负样例较多的问题,本文提出了基于规则和模板的负样例过滤方法,以平衡正负样本的比例;最后在两个生物数据集上验证本文提出的模型,并通过注意力权重的可视化形式以及消融实验来分析模型的分类效果。
1 药物相互关系提取的KA-BERT模型
本文基于卡方值和文档频率提取类别关键词,并基于BERT模型,提出了结合关键词信息和注意力机制的关系提取模型(KA-BERT模型)。该模型由4部分组成,包括向量映射模块(预训练BERT编码器与位置编码器)、基于位置的关键词编码器、注意力机制、输出层(全连接层与Softmax),模型结构如图1所示。
图1 KA-BERT模型结构
1.1 获取类别关键词
卡方检验[11]是文本分类的特征选择方法之一,在统计学中卡方统计量常常用于检测两个事件的独立性。本文基于词与类别相互独立的假设,计算实际观测值与理论推断值之间的偏离程度。偏离程度越大,说明假设不成立,词与类别相关。本文计算每个类别与词之间的卡方值公式为
(1)
式中,N为训练数据集文档总数,A为包含词条w同时属于类别c的文档数量,B为包含词条w但不属于类别c的文档数量,C为属于类别c但不包含词条w的文档数量,D为不属于类别c同时也不包含词条w的文档数量。
卡方值计算关注词与类别的关系,同时还需考虑提取的关键词能否覆盖较多的样例,因此可按下列公式计算词在每个类别样例中的文档数(即词的文档频率):
(2)
式中,Nw/c为包含词条w在类别c样例的文档数量,Nc为类别c的文档数量。
按照卡方值大小对词进行降序排列,设置词的文档频率阈值为5%,过滤文档频率较低的词,最后取每个正类中卡方值排行前10的词作为关键词集合。
1.2 向量映射模块
在本文的关系抽取模型中,主要包括词序列、位置序列和关键词索引3种输入信息,分别采用不同的向量映射方法转化为向量形式。
词序列采用文献[7]中的预训练BERT-Base模型映射成向量,将得到的词向量记为以下形式:
X=(x[CLS],x1,x2,…,xs,x[SEP])
(3)
式中,xs∈Rl是文本的每个词,l是预训练BERT得到的词向量维度,s是句子长度,下标[CLS]和[SEP]是BERT模型中用来表示句子首、尾的标记符号。
本文模型中还加入了位置序列,用于表明关键词到目标药物对的距离信息。设两个目标药物为e1和e2,则词xi的两个位置编码定义为
(4)
(5)
为了与词向量相对应,在位置序列的开头和结尾也加入[CLS]和[SEP]标记,并用Word2Vec获取两个位置矩阵:
(6)
(7)
对于每个句子,可以得到这些关键词在句子中的索引。如果当前位置词语是关键词,则设置其关键词索引向量为全1的向量,否则设置为全0的向量。得到的关键词索引向量如下:
I=(i[CLS],i1,i2,…,is,i[SEP])
(8)
式中,is∈Rl+2m,is中的元素要么全为0,要么全为1。
1.3 关键词与药物对的位置编码
当句子中出现多个不同类别关键词时,需要根据药物实体对来定位真正的关键词。将词向量和两个位置编码向量进行拼接,得到包含位置信息的词向量矩阵:
U=[X;P1;P2]=(u1,u2,…,us+2)
(9)
式中,us∈Rl+2m。
通过关键词索引向量和词向量的乘积,可以得到句子中的多个关键词向量,对这些关键词进行求和平均,得到一个平均关键词向量v。由于词向量和位置向量是通过不同模型训练得到的,属于不同的向量空间,因此使用一个全连接层对词信息和位置信息进行重新编码,可得到关键词向量的位置编码:
(10)
k=tanh(Wkv+bk)
(11)
式中,v∈Rl+2m是平均关键词向量,Wk和bk是全连接层的权重参数,k∈Rl是融合位置编码信息的关键词向量。
1.4 关键词与其他词的共现信息
本文利用注意力机制计算关键词与句子中其他词的关联关系,通过为不同词分配不同的权重来获得关键词与其他词的共现信息,最后获得句子表达式用于最终的模型分类。计算过程如下:通过式(12)逐一计算关键词向量k和每个词向量xi的相似度;通过式(13)得到注意力系数,并进行归一化;通过式(14)将权重向量与词向量相乘,降维求和,最终得到融入关键词信息的句子表达式h(h∈Rl)。
Si=tanh(Wak,Wbxi)
(12)
(13)
(14)
式中,Wa和Wb是矩阵参数。
1.5 输出层和损失函数
在获得句子表达式之后,通过全连接层转化为维度为类别数的向量,通过Softmax归一化后输出得到每个类别的得分,将得分最高的类别作为样例的预测类别,即
(15)
最后采用交叉熵函数作为模型的损失函数:
(16)
式中,yi是样例的真实概率分布,是真实标签独热编码的形式。
2 负样例过滤
本文使用DDIExtraction 2013测评作为实验数据,其中的药物关系可以分以下5类:
(1)Int类,描述药物之间的简单交互,而未提供任何其他详细信息;
(2)Advice类,描述有关药物相互作用的建议;
(3)Effect类,描述药物相互作用的药效机理;
(4)Mechanism类,描述药物相互作用的药代动力学机制;
(5)Negative类,表示句子中的药物对不存在相互关系。
(1)同名药物过滤。一般认为同种药物之间不存在药物关系,因此包含两种相同药物的实例可以作为负样例过滤。
(2)并列关系过滤。当实例中的两种药物处于并列关系时,这两种药物之间一般不存在关系。当两个药物实体之间的间隔字符出现在以下列表[“ ”,“or”,“,”,“(”,“)”,“[”,“]”]中,则认为这两个实体是并列关系。
在对数据的分析中,发现正样例和负样例中实体对之间的词具有一定的区分度。正样例中实体对之间的词较为丰富,多为“reduce”、“increase”等有实际意义的词,而负样例实体对之间的词较为单调,多为标点符号、药物等,因此提取实体对之间的词作为模式来过滤负样例。具体操作步骤如下:
(1)在训练集中,分别提取正样例和负样例中药物对之间的词序列,将词序列分离成单词列表,并对单词列表进行排序去重,得到正样例模式集合和负样例模式集合;
(2)从负样例模式集合中去除两个模式集合的交集,得到新的负样例模式集合;
(3)统计负样例模式集合中各个模式出现的频率和长度,根据频率和长度进行过滤,保留出现频率大于30以及出现频率在10~30之间且序列长度小于4的模式。
对训练集和测试集数据进行过滤,过滤之后各类型样例数量如表1所示,正负样例的比例如表2所示。从表1可知,经过本文方法的预处理之后,大大减少了负样例的数量,但没有对正样例造成太大的损失,训练数据中正样例数减少了30(占0.8%),测试数据中正样例减少了9个(占0.9%),这个损失也会被计入后续的模型评估中。
从表2可以看出,在原本的训练数据中,负样例是正样例的5.92倍,在测试数据中是4.83倍。采用文献[6]的规则过滤方法时,训练数据中的正样例数减少了39,测试数据无正样例损失,但总体上对负样例的过滤力度还不够;在经过本文方法的预处理之后,训练集和测试集中的正负样本比例分别为2.68和2.81,相比基于规则的过滤方法,能够更好地降低正负样本比例。
表1 负样例过滤前后的类别数量对比
表2 负样例过滤前后的正负样本比例变化
3 实验及结果分析
3.1 模型参数
本文模型基于Python 3.6.10和Tensorflow-gpu- 1.12.0实现,模型参数设置如下:词向量和位置向量维度分别为768、25,最大句子长度为128,Dropoutrate为0.9,学习率为3×10-5,batch大小为16,迭代次数为5。
3.2 评估指标
在关系抽取任务中,本文采用准确率P、召回率R和F1值作为评估标准,具体定义如下:
(17)
(18)
(19)
式中,NTP,c是真实标签和预测标签都是类别c的样例数,NFP,c是预测标签为类别c、真实标签不为类别c的样例数,NFN,c是预测标签不为类别c、真实标签为类别c的样例数。
3.3 与其他模型的对比
将本文KA-BERT模型和其他用于DDI提取的模型进行实验结果对比,这些模型按照主要网络结构分为基于CNN的、基于LSTM的和基于BERT的,其中基于BERT的模型都采用与本文模型一致的预训练BERT模型。模型介绍如下:①CNN[3],是简单的CNN网络,使用词和位置编码作为输入;②MCCNN[12],通过多通道CNN结合多种词嵌入来丰富词向量的语义信息;③DCNN[13],基于依赖树的CNN模型;④DLSTM[14],基于依赖树的LSTM模型;⑤PM-BLSTM[6],加入位置注意力和多任务学习的DDI提取模型;⑥Att-BLSTM[5],加入词性信息和药物注意力向量的DDI提取模型;⑦BERT[7],在生物医学文献上训练的BERT模型,使用[CLS]向量作为句子向量进行DDI提取;⑧R-BERT[15],计算句子与两个药物实体的注意力向量,和[CLS]向量一起拼接作为句子向量进行DDI提取;⑨BERT+Gaussian[8],将词与药物实体的距离以高斯分布概率形式表示,最终和[CLS]向量一起作为句子向量。这些模型的实验结果如表3所示。
表3 几种模型的实验结果对比
从表3中可知,相比基于CNN的模型,基于LSTM的模型总体上表现较优,CNN模型的卷积核以固定的窗口大小提取句子的局部特征,但在DDI数据中,一些药物实体对可能相距较远,CNN模型难以处理长距离依赖的问题。
在基于CNN和LSTM的模型中,主要依赖Word2Vec和ELMo工具训练获得词向量。在基于BERT的模型中,使用在生物文献上预训练的BERT模型来获取词向量,相比Word2Vec模型,BERT模型的结构更为复杂,使用更多的数据,生成更具有语义信息的词向量。基于Word2Vec训练词向量的模型分类效果基本上不超过78%,而使用简单的BERT模型进行文本分类,F1就能达到79.48%,效果得到很大的提升。
R-BERT模型利用注意力机制将目标药物对的信息融入到词向量矩阵中,BERT+Gaussian模型为距离药物更近的单词赋以更高的权重,两个模型针对关系提取特性,增加了药物对的信息,相比单纯的BERT模型,F1值分别提高了1.07%和2.06%。本文模型增加了关键词信息,以提高句子的区分度,同时对关键词进行与药物对相关的位置编码,能够很好地提高药物关系的提取效果,其F1值相比R-BERT和BERT+Gaussian模型分别提高了1.86%和0.87%。
3.4 本文模型各模块的影响
本文设计了以下几组实验测试本文模型各模块对分类效果的影响,结果如表4所示。
(1)基准模型实验:采用基于规则的方法[6]对负样例进行过滤,取BERT模型的“[CLS]”向量作为句子表达式向量进行分类;
(2)+负样例过滤实验:在基准模型实验的基础上,采用本文的负样例过滤方法对数据进行处理;
(3)+类别关键词实验:在上一个实验的基础上,加入类别关键词信息,并使用注意力机制计算关键词和其他词的共现信息作为句子表达式;
(4)+位置编码实验:在上一个实验的基础上,加入关键词与药物对的位置编码,即完整的KA-BERT模型。
表4 KA-BERT模型各模块对分类结果的影响
从表4可以看出,相比基于规则的过滤方法,采用本文的负样例过滤方法进行处理后,模型的F1值提升约1.31%,有效地缓和了正负样本比例不平衡的问题,提升了模型的分类效果。类别关键词的加入使得模型在准确率上有较大的提升,提高了约1.78%,F1值提高了0.74%。模型通过注意力机制学习类别关键词和其他词的共现信息,并作为句子表达式来提高模型的分类效果。有一些样例是从同一个句子中拆分出来的,不同的样例会获得同样的关键词信息,因此本文模型中加入关键词与药物实体对的位置编码,增加与药物实体对的联系,从而增加不同样例的区分度,达到提高关系提取的目的。相比基准模型,本文模型的F1提高了约3.02%。
3.5 实验结果分析
为了更加直观地展示模型能力,将注意力权重以可视化的形式呈现出来。Int类别样例的注意力权重如图2所示,其中样例有两个关键词,分别是Int类的interact和Effect类的decrease。
[CLS]0.013@1.4×10-6drug1.6×10-6$3.8×10-5may0.076interact0.14with0.14@7.6×10-6drug2.4×10-6$2.5×10-4or0.017drug0.0061(0.079causing0.12too0.041great0.044a0.12decrease0.051in0.064ad0.013##ren0.018##al0.024function0.0081)0.011.0.0037[SEP]0.0075
本文模型通过注意力机制计算关键词与其他词的注意力权重向量,目的是为了突出句子中的关键词,同时学习关键词与其他词的分布情况,以提高模型分类效果。从图2可以看到,模型给予关键词interact更高的权重,并且能够学习关键词与其他词的分布信息,如短语interact with(与……相互作用)、causing…a decrease in(导致……减少)。
3.6 错误样例分析
表5是本文模型分类结果的混淆矩阵(最后一列中加上的数据是在数据过滤阶段损失的正样例数)。可以将表中误分类的样例大致划分为3类:
(1)正样例错误预测为负样例,这部分占所有正样例的10.45%,对这部分样例进行分析,发现有些句子已经给关键词赋以较大的权重,但还是没能预测正确,可能是训练数据的负样例中存在类似的样例,从而使模型错误判断。
(2)负样例错误预测为正样例,这部分占负样例的3.46%,可能是因为句子中包含了类别关键词。
(3)Int类错误预测为Effect类,约占Int类的39.58%。如例子“[CLS]other drugs which may enhance the neuromuscular blocking action of @drug$ such as @drug$ include certain drug (e.g.,drug, drug, drug, drug, drug, drug, drug, and drug),drug salts, drug, local drug, drug, and drug.[SEP]”中的enhance和drug都是Effect类的关键词,所以句子误判为Effect类,同时因为这个句子中包含较多的药物,生成的样例全部判断为Effect类,导致Int类错误预测为Effect类的比例上升,且一错多错。
表5 分类混淆矩阵
3.7 化学-蛋白质相互关系提取
CHEMPROT数据集包含6种化学-蛋白质相互关系(CPI),在数据集中的具体分布如表6所示。本文还在CPI提取任务上对KA-BERT模型进行实验测试。本文KA-BERT模型和文献[7,16- 19]模型在CHEMPROT数据集上提取CPI的实验结果如表7所示。
表6 CHEMPROT数据集的类别分布
表7 几种模型在CPI提取上的实验结果对比
文献[16]尝试通过使用细粒度注意力机制来探索上下文特征向量的内部信息,并通过Swish激活函数的非单调性来优化网络,取得了65.14%的F1值。文献[17]利用ELMo从大量无标注的生物文献上学习向量表达,并通过多头注意力机制从不同方向学习重要特征以改善CPI提取性能,最终取得了65.90%的F1值。文献[18]将实体注意力机制加入到堆叠的Bi-LSTM中,以提高CPI提取性能,最终获得69.44%的F1值。文献[7]在PubMed数据集上预训练BERT模型,使用[CLS]向量作为句子表达式进行分类,取得了72.50%的F1值。本文的KA-BERT模型在准确率和召回率上都有明显的提升,取得了73.89%的F1值,相比文献[7]模型的F1提升了1.39%,证明了KA-BERT模型的有效性和通用性。除了序列模型之外,目前还有一些方法是用图神经网络来提取CPI,如文献[19]利用图神经网络从句法分析树中提取句法依赖信息,其分类效果较序列模型差。
4 总结与展望
本文提出了结合类别关键词和注意力机制的药物关系抽取模型,首先基于卡方检验和文档频率来获取类别关键词,在预训练BERT模型中增加对关键词的位置编码,并通过注意力机制学习关键词与其他词的分布信息。与基于CNN、基于LSTM和基于BERT的DDI提取模型实验结果的对比表明,本文模型能够很好地提高药物关系的提取效果,证明了该模型的有效性。在化学-蛋白质相互关系抽取上的测试结果表明,本文模型的准确率、召回率和F1均有明显的提升,证明了本文模型的有效性和通用性。
本文通过将类别关键词作为类别先验知识来提高模型的分类能力,但最终模型是依赖词之间的分布信息进行分类,或许可以提取更复杂的词共现信息作为类别先验知识,如短语、一些固定搭配等。另外,一些关键词同时存在于不同类别中,对样例的分类会造成负面效果。在今后的研究工作中,可以考虑在模型中加入选择机制,由模型决定是否通过对样例加入先验知识来降低先验知识对某些样例的负面影响。