
论文
代码
数据 数据不能正常下载的,看本文末。
今天解读这篇论文与上一次分享的【细粒度实体标注】有些相同之处。
一、背景
这篇论文想用实数与复数对实体类别的层次结构进行双线性映射,来整合层次结构信息。
二、模型
细粒度实体标注链接问题定义如下:
给定一个标注了实体的句子,eg:
='<entity>Barack Obama</entity> is the President of the United States.',对句
中标注好的实体Barack Obama从系统类别集合
中找出它的一个或多个类别,得到Barack Obama实体的细粒度类别集合
={president, leader, politician}。
模型分为两层考虑,一层是mention-level typing,一层是entity-level typing。
模型结构如下:

模型简介:首先将实体的词向量表示进行求平均得到Mean模块,然后实体的句子的词向量表示用CNN进行特征抽取处理,再最大池化处理得到Max Pool模块,最后将Mean与Max Pool进行拼接,输入到两个MLP模块中。注:MLP(Multi-Layer Perception),即多层感知器,是一种前向结构的人工神经网络,映射一组输入向量到一组输出向量。
1.为什么需要加位置信息?
一个句子中可能有多个实体,所以为了区别当前需要预测的实体,就给词向量拼接一个位置向量
,假设句子的长度为s,实体自己的位置为0,实体左边的词位置取值为[-s,0),实体右边的词位置取值为(0,s]。最终句子序列的向量表示为
。
2.句子序列M怎么处理?
,
句子经过CNN加工为C,C再经过Max Pool得到
3.实体序列怎么处理?
实体的词向量求平均得到
4.最终的模型输出?
两向量进行拼接,然后用两层MLP进行向量映射转换处理,即为预测的实体类型向量。
三、训练过程
模型分为两层考虑,一层是mention-level typing,一层是entity-level typing。这两层在训练过程中体现。
1.mention-level typing层
将模型最终生成的预测类别向量与系统中所有的类别T进行相似度计算,以下公式是系统类别集合T中的第i个类别向量与预测类别向量
进行相似度计算:


2.entity-level typing层
对于没有标注出实体的句子,就需要利用远程监督的方法,将实体标注出来并标注出它的类型。但,这种方法噪声很大。为了减少噪声数据的影响,文中利用多实例多标签学习方法MIML,在词袋子基础上操作,而不是在实体划分的基础上操作。操作过程描述如下:
一个实体的词袋子可以表示为,eg:实体Barack Obama的词袋子为{Barack,Obama}。简言之,实体词袋子就是将实体划分为单词集合。
假设这个实体词袋子的标签为是一个二值向量,它的第j位置取1就表示这个实体存在类别j,若第j位置取值为0,就表示这个实体不存在类别j。
对于每个实体,从实体词袋子中子采样k个样例语句,每个样例都由以上模型进行处理。对于这k个样例句子,,经过模型后都会得到一个
将模型最终生成的预测类别向量与系统中所有的类别T进行相似度计算:


这一层多标签二元交叉熵损失函数为:

3.层次结构怎么处理?
该处是本论文的重点。
1)双线性模型
预测可链接性分数,将
的向量转置,乘以一个对角实数矩阵
,再和
相乘,即得一个分数标量。
2)复杂双线性模型

3)将复杂的双线性模型用到实体细粒度标注


四、实验结果

五、总结
这篇论文基础模型base-model还算简单,只用了CNN和2层MLP。论文考虑到了已经标注好的实体的句子,怎么进行实体类别细粒度划分,又考虑到了没有标注实体的句子,怎么进行实体细粒度划分。对于已经标注好实体的句子,它用基础模型base-model就ok;对于没有标注好实体的句子,就需要用远程监督的方法生成标注的实体,并采样k个样例句子输入基础模型base-model中,然后对着k个样例进行整合处理。模型的损失函数中考虑到了复杂双线性处理方法,预测得到的实体类别向量处理成实部:
,虚部:
。
这篇论文公开的数据集在google云盘上,文件有点大,对于有些人来说很难下载,我将该数据放到云盘上分享了。百度云数据4u83

网友评论