《Neural Architectures for Named Entity Recognition》
说明:只讲前面的biLSTM+CRF,后面的S-LSTM不讲
实体抽取方式
1.基于规则和词典—传统
2.基于统计机器学习的方法,如CRF,HMM—传统
3.深度神经网络—现在
CRF简单简介
假设有有一句话5个词,则这句话的可能的序列标注有如下:
(名词,动词,形容词,名词,名词)
(名词,动词,动词,名词,名词)
…
(名词,形容词,副词,动词,名词)等很多种可能。
crf:用来判断上面哪种可能性更大。
CRF可以通过定义一组特征函数来打分:
比如:形容词后面通常跟名词,所以出现这样的序列就加一分;动词后面通常不会再出现动词,如果出现这种情况就减一分;等等…
crf介绍链接
模型
BiLSTM层
经过一个BiLSTM之后再经过一个softmax,可以得到每个字对应的标签,实际上已经能够得出这个字属于哪个标签,后面再加上CRF,完全是为了保证序列的输出严格性,因为CRF对于预测序列有较强的的限制性,比如B-PRESON后面只能为I-PERSON或者O之类的限制。
CRF层
crf层的作用是找出 一组标注序列 中的最大可能性的 一个序列标注。
打分
以上表格对应的是经过一个BiLSTM后再经过一个全连接层后得到的每个字对应每个标签的可能性。
以上表格代表的是当前标签为x,下一个标签为y的可能性。如当前标签是B,则下一个是M的可能性是0.5、下一个是E的可能性是0.5,等等…
以上就是对每个序列打分的计算公式。代表转移矩阵的打分,代表BiLSTM后的打分,两者求和即可。
a check
单词中出现tion/ment/…通常为名词,单词中出现-al通常为形容词,以及前缀和后缀的信息,等等…
能不能提取字符内的特征?
可以,如下图:
每个单词拆分成一个字母一个字母的,然后再经过一个BiLSTM,输出一个拼接的char embedding,最后和这个单词的word embedding拼接在一起,作为整个模型的输入。
训练
训练目的,最大化上图公式。
以下再加个log得到如下公式