论文
代码位置1 or 代码位置2
实验数据
17,18年之前的实体类别划分算是粗类别的划分吧,主要分为:人名、地名、组织机构、专有名词等。今天介绍的这篇论文是关于实体类型进一步细分的问题。
例句:“张三抢劫了李四,张三最终被抓住了。”
粗粒度实体识别:张三:人名;李四:人名。
细粒度实体识别:张三:人名、犯罪分子;李四:人名、受害者。
实体的细粒度划分,在垂域、特定领域是有一定的利用价值的,所以该问题的研究值得关注。
一、背景
为什么需要实体细粒度划分?
文章:张三抢劫了李四,张三最终被抓了。
问:谁是罪犯? ——(有助于阅读理解、知识问答)
如下图所示,一个英语句子中的实体被‘{}’标识出来了,细粒度实体识别任务就是判别该实体的细分类型是什么。第2个句子中的They实体,它的细粒度实体类型有:人、被告人、嫌疑犯。
下图是三个数据,实体类别数量与占比图,圆圈越大表示该类别占数据集的比例越大。
1)这个数据集的“other”类别太多了,前5个类别总和达到了数据的70~80%。
2)这个数据集的实体类别标签也比较少,且前5种类别总和达到了数据的70~80%。
3)这个数据集是该篇文章自建的一个数据集,它的实体类别种类繁多。更适合用来做细粒度实体识别任务。注:实验数据可下载:数据。
6000个实例,2500种类别
这个数据集是从多个领域数据集中采样抽取出来的,然后用名词来表示实体类型,一个句子中的实体由5个人来标注其细粒度实体类别,然后选3/5的标注词为该实体的细粒度实体类别。
9个大类:person, location, object, orga-nization, place, entity, object, time, event
121个细分类:(e.g. film, athlete)
10201个再细分类: (e.g. detective, law-suit, temple, weapon, composer)
二、模型
问题定义:给一个句子且标注出句子中的实体e,需要预测实体e的类别。
如:“Bill Gates has donated billions to eradicate malaria.” 实体Bill Gates的实体类别应该是“慈善家”,而不是“发明家”。这种标注出来的具有区别性质的实体类别,对文本语义理解和问答系统有帮助。
1.实体两端的上下文处理过程
给一个句子,句子的每一个词都一个对应的预训练好的词向量,每一个有自己的位置向量,然后将词向量与位置向量拼接起来:[词向量;位置向量]==,这作为bi-LSTM的输入,经过bi-LSTM处理后,每一个词的语义表示为。与前人不同的是,该篇论文用两个独立的bi-LSTMs来处实体两边的文本。
2.实体自己处理过程
一个实体如:Bill Gates也是有两个英语单词构成的,所有由词向量到实体向量也得有一个转换过程:a)用CNN对实体进行特征抽取处理;b)词向量加权求平均。得到的实体向量表示为,最终上下文和实体的语义向量表示为预测的类别向量:
3.标签预测
类别矩阵,其中n表示标签的数量,d表示类别r的维度。其实这个大类别矩阵由三个子矩阵组成:=9d维,=121d维,=10201*d维。将上面1.2步骤处理得到的预测类别向量r与这个大的类别矩阵进行相似度计算:,用sigmoid函数处理最终的值,这相当于是一个多标签问题。那些的类别都视为预测得到的细粒度标签们。
4.损失函数
由上可知,这是一个多标签问题,模型的最后输出也是用的sigmoid函数做处理。该论文为这个模型定义了一个新的损失函数如下:
其中,是一个检查函数,检查t类别是否在这个category里,另一个计算公式如下:
三、结果
四、总结
该篇论文主要是自己构建了一个新的数据集,并在这个数据集上将前人的模型进行改进后做实验,取得一定的效果。这篇文章的模型思路不难理解,只用到了两类神经网络函数bi-LSTM、CNN,且定义了一个区分类别的损失函数。