统一的NER识别模型-Unified NER

论文:Unified Named Entity Recognition as Word-Word Relation Classification

地址:https://arxiv.org/abs/2112.10070

截止到20220308为止的sota

1. 提出两个概念

统一的NER识别模型-Unified NER_第1张图片

提出了两个新的概念,将连续、嵌套、不连续实体的识别进行了统一,可用一个模型更好的完成以上三种实体的识别:

NNW:下一个相邻词/字,表示两个字之间的关系

实体中的相邻词

THW-*:头尾token,头尾产生联系,表示出不连续实体的头尾关系,并且和类型*关联。

边界及类型指示作用。

2. 模型架构

统一的NER识别模型-Unified NER_第2张图片

1. Encoder Layer: 使用BERT和LSTM提供上下文表示;

2. Encoder Layer之后有两个分支:

  •  一个是虚线部分的Biaffine网络,即双仿射注意力机制(可以参看文章1),其是为了解决嵌套实体、多头选择的问题
  • 二就是实线所示的部分,也即本文提出的方法:其首先经过一个conditional layer normalization层得到Word Embedding,与另外两个Distance Embedding和Region Embedding进行concatenation操作后,过MLP层,然后进行卷积操作。三个Embedding矩阵作者是类比BERT的三种Embedding输入,其中region Embedding 的构建就是基于本文提出的两个概念出发,distance embedding表示句子字词之间的相对距离。

3. 将双仿射网络的输出和卷积的输出进行element-wise 相加,也即对应位置相加,输出后做交叉熵计算loss

整个网络代码也非常清晰:

self.bert = AutoModel.from_pretrained(config.bert_name, cache_dir="./cache/", output_hidden_states=True)
self.dis_embs = nn.Embedding(20, config.dist_emb_size)
self.reg_embs = nn.Embedding(3, config.type_emb_size)
self.encoder = nn.LSTM(lstm_input_size, config.lstm_hid_size // 2, num_layers=1, batch_first=True, bidirectional=True)
self.convLayer = ConvolutionLayer(conv_input_size, config.conv_hid_size, config.dilation, config.conv_dropout)
self.dropout = nn.Dropout(config.emb_dropout)
self.predictor = CoPredictor(config.label_num, config.lstm_hid_size, config.biaffine_size, config.conv_hid_size * len(config.dilation), config.ffnn_hid_size,config.out_dropout)

3. 实验结果

英文sota:

统一的NER识别模型-Unified NER_第3张图片

中文sota: 

统一的NER识别模型-Unified NER_第4张图片

代码:

https://github.com/ljynlp/W2NER

1. 实体识别之Biaffine双仿射注意力机制 - 知乎

你可能感兴趣的:(pytorch,人工智能)