简介
- 传统序列标注模型存在的问题:
- 大多数基于线性的统计语言模型
- 基于大量的人工特征
- 需要大量的外部数据,比如名称库
- 普适性差
- 近几年的序列标注模型:
尽管这些使用一些分布式表示,例如词嵌入作为输入,但是仅仅是为了增加手工特征而不是替换它;另一方面,如果这些模型完全依赖于神经嵌入,那么性能下降非常快 - 本文贡献
(i) proposing a novel neural network architecture for linguistic sequence labeling.
(ii) giving empirical evaluations of this model on benchmark data sets for two classic NLP tasks.
(iii) achieving state-of-the-art performance with this truly end-to-end system.
神经网络结构
- 第一步:CNN获取Character-level 的词表示
在这里,CNN的优点是可以高效地学习形态学特征,比如单词的前缀或者后缀、大小写等
- 第二步:Bi-directional LSTM
将第一步获得的单词表示和训练好的词向量结合起来,作为Bi-directional LSTM的输入,得到每个状态的表示。注意,BLSTM的输入和输出都过了Dropout层
- 第三步:CRF
将Bi-LSTM的输出向量作为CRF层的输入,最终预测出序列
训练
参数以及实验部分请参考论文,这里不详细解释了。最终的结果当然很棒了
总结
其实这篇论文是2016年ACL的论文,自己现在看实在太晚了,但是总结自己以前看的论文,感觉这篇文章基本上提出了一个base model,BiLSTM-CNN-CRF,以后会经常看到文章都是基于这种结果衍生的。最后自己找了一个基于Pytorch的开源代码,有详细的实现过程。 End-to-end-Sequence-Labeling-via-Bi-directional-LSTM-CNNs-CRF-Tutorial