作者:高开远
学校:上海交通大学
研究方向:自然语言处理
上一篇【论文】Awesome Relation Extraction Paper(关系抽取)(PART I)介绍了一些关系抽取和关系分类方面的经典论文,主要是以CNN模型为主,今天我们来看看其他模型的表现吧~
考虑到CNN对于文本序列的长距离建模不够理想,作者提出使用RNN来进行关系分类的建模。整体框架如下:包括了word embedding layer---> Bi-RNN layer---> Max Pooling layer。
整体属于比较简单易懂的RNN传统框架,并没有加什么其他trick。相较于之前的Position Embedding
,这里使用了Position indicators
来替换,这是因为在RNN中,单词之间的位置信息已经会被自动地建模进去。PI就是使用四个标签来标记两个实体对象,比如对于句子:people have been moving back into downtown
在加入PI之后变成了<e1> people </e1> have been moving back into <e2> downtown </e2>
,其中<e1>, </e1>, <e2>, </e2>
就是标签,在训练的时候直接将这四个标签当成普通的单词即可。
提出了一种基于最短依赖路径(shortest dependency path, SDP)的深度学习关系分类模型,文中称为双向循环卷积网络(bidirectional recurrent convolutional neural networks,BRCNN)。
在每个RCNN中,将SDP中的words和 words之间的dependency relation 分别用embeddings表示,并且将SDP中的words之间的dependency relation 和words分开到两个独立channel的LSTM,使它们在递归传播的时候不互相干扰。在convolution层把相邻词对应的LSTM输出和它们的dependency relation的LSTM输出连结起来作为convolution层的输入,在convolution层后接max pooling。在pooling层后接softmax分类,共有三个softmax分类器,两个RCNN的pooling分别接一个softmax做考虑方向的(2K + 1)个关系分类,两个RCNN的pooling连到一个softmax做不考虑方向的(K + 1)个关系分类。
这篇文章使用的是LSTM,避免了RNN在处理长文本时存在的梯度消失问题。另外加入了attention layer可以更有效地关注实体对之间的关系。整体框架如下图
几个层的组件都是现在做nlp非常主流的成分,也可以参考我之前的博客,而且文章中也没有涉及什么tricks。整个模型可以分为以下几层:
文章中提出的BiLSTM + Attention可以做为很多NLP 任务的baseline,效果强大。
在SemEval-2010 Task 8上取得了84%的F1值,可以说是效果非常好了。
ON THE WAY…
使用CNN+Attention来实现关系分类,设计了较为复杂的两层attention操作,第一层是输入attetion,关注实体与句子中单词之间的联系;第二层是卷积之后的attention pooling,关注的是标签与句子之间的关联。另外在模型的损失函数部分,作者也单独自定义了一个loss,改进了之前提及的margin-based ranking loss。模型整体框架如下所示,下面我们将其分解来仔细看一下是怎么运行的。
模型输入是一个句子
以及两个标注好的实体。常规操作,先利用预训练的word2vec映射成词向量矩阵,同时加入了位置向量,目前为止得到的输入形式为:
之后为了更好地融入句子的上下文信息,选取了大小为k的窗口滑过句子(为了中心词左右单词个数相同,最好选取k为计数),得到最终输入表示为:
其中
经过预处理后得到我们的输入表示应该就像上图中的最下层的矩阵的形式了,然后对其进行第一层attention操作提取实体与单词的关联信息。
卷积层就跟普通的一样没什么trick的设计啦
注意一下其中参数矩阵的形状,矩阵R的形状为【
, n】,假设选用的卷积核大小为d^c, 则参数矩阵W_f的形状为【d^c,
】,最终R∗的形状为【d^c,n】
在经过卷积层之后一般都需要pooling一下,这里没有选择普通的average或者max pooling,而是利用attention来融入最终标签W_L的信息
,其中U为需要学习的矩阵
首先对于标签信息映射了一个向量矩阵W_L, 形状为【d^L,L】,也就是对应每一种关系都有一列向量表示。同样地,在我们网络的输出也是每一类实体关系的向量。基于这两个向量,可以学习他们之间的距离:
最终的损失函数与之前提的类似,只不过这里将margin设置为了常量1,加入了L2正则
数据集也是SemEval-2010 Task 8
ON THE WAY…
原文链接:
https://blog.csdn.net/Kaiyuan_sjtu/article/details/89961647
本文由作者原创授权AINLP首发于公众号平台,点击'阅读原文'直达原文链接,欢迎投稿,AI、NLP均可。