不管坚持是否带有
一种妄想的期待
新的一年,生活、工作还的继续
1 前 言
今天分享2019年ACL一篇关于中文实体关系抽取的paper,<Chinese Relation Extraction with Multi-Grained Information and External Linguistic Knowledge>,出自清华大学。论文的大致思路可以从标题看出:利用多粒度信息和外部知识进行关系抽取。论文中多粒度是指字的粒度和词的粒度结合,外部知识是指HowNet这样的知识库。论文链接,这篇论文的代码也开源了,在GitHub上,代码链接。
2 Introduction
作者用上图来阐述当前在中文实体关系抽取任务上,主要存在两种问题,一是若分词则存在切分歧义的问题,二是存在一词多义的问题。针对第一个问题,先前有研究提出采取字的粒度,或字和词粒度结合的方法;针对第二个问题,主流的方法是利用外部知识库作为补充信息,进行关系预测。然而,作者发现还没有研究将这两种方法进行融合来做实体关系抽取,因此就有本文的构想。
3 Model
论文model的结构图如上图所示,主要包括三层结构:Input Represent ,MG Encoder,Relation Classifier。论文的核心在Encoder层,其基本思想是利用字,词,还有外部知识融合一起,然后重构下LSTM结构。接下来重点说说这块。
3.1 Input Representation
先考虑字级别(Character-level Representation)的embedding输入,具体使用实现训练好的字向量(例如使用word2vec)。此外,考虑每个字与实体对的相对位置的embedding,也成为position embedding,位置编码的的方式如下图:
最后,一个字符的完整编码为下图,包含一个字向量和两个位置向量。
接着考虑词级别(Word-level Representation)的embedding输入,具体是利用一个词典D对文本进行匹配,如从b-th 到e-th字符组成的词匹配到,就使用这个词的向量,向量同样可以使用word2vec预训练而来。
最后,作者要把外部知识(External knowledge)利用起来,具体做法是利用HowNet查找一个词的代表所有含义,作为这个词的含义代表,这样做的好处就是弥补word2vce这种固定分布式表达所带来的缺点。
如何将一个词的含义用向量表达出来,论文中使用 SAT model,此处作者也没详说。
通过上述步骤,就可以清楚知道Input的变量有字级别的向量,词级别的向量,以及词的对应含义向量。接下来,就是如何将三类变量Encoder,这也是论文的重点。
3.2 Encoder
在Encoder部分,作者分别介绍一个基本版本(Basic Lattice LSTM Encoder)和一个完整版(MG Lattice LSTM Encoder),前者实现字和词的融合的encoder,后者是将字和词的含义向量嵌入encoder中。我们先看看基本版本是如何实现的。
Basic Lattice LSTM Encoder
首先展示出基于字的LSTM结构公式为:
在将词的embedding加入字的encoder中,先学习词的编码的,具体为:
接着,作者认为第e个字符的编码表达,应该包括它本身的字表达,还包括以它结尾的所有词的表达。此外,考虑每个词的影响程度不同,引入一个词的输入门:
然后第e个字符的编码被设定为:
上面涉及两个权重变量,求解的方式类似softmax方式:
MG Lattice LSTM Encoder
以上就是基本版本的Encoder的结构,其主要思路就是考虑第e个字符表征时,将以e为结尾的词的表征以加权的形式加入进去。所以,接着,作者提出自己的改进思路,其思路的目的是要在上述的基础上,加入词的sense embedding。
上述的公式,是将b,e之间的词的每个含义按lstm进行表征,然后将k个表征进行加权来代表这个词的整体含义表征:
有了词的含义表征,然后按基本版的思路:将其与字的表征结合起来:
以上就是作者的核心的思想,总结起来就是将词的所有含义信息表征起来,加入字的表征中,然后做分类预测。
3.3 Relation Classifier
在分类层上,作者没做什么改变:将通过MG Encoder编码后的每个字符的隐藏h向量,接入一个attention层,然后再加一个softmax分类层,损失函数用交叉熵。
4 Experiments
在实验部分,作者使用FinRE,SanWen,ACE三个中文数据集,采用F1值得评价方法,训练结果如下图:
结果显示,作者的方法都取得最佳效果,其中MG 方法表现最好,较基本版本的有2%的提升。
5 结 语
这篇论文公式较多,因为简书的编辑器太简单,复杂的公式书写不了,我只好截图方式,有些细节符号我都文字代替了。所以,若想详细理解,还是建议去读原文。
总的来说,作者的思想还是比较简单,公式都是LSTM的基本结构。创新的地方就是将词的含义信息融合字的表征中,其中我有一处个人看法:在求词对应K个含义表征的权重时,我觉得应该考虑上下文信息会更好些。因为实际中,我们在考虑一个多义词的含义时,就是通过语义环境,也就是上下文来判断的。