Press "Enter" to skip to content

《Simplify the Usage of Lexicon in Chinese NER》阅读笔记

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

Simplify the Usage of Lexicon in Chinese NER

 

ACL 2020 复旦大学

 

Source: Simplify the Usage of Lexicon in Chinese NER

 

Code: v-mipeng/LexiconAugmentedNER

 

Abstract

 

现象及问题

 

最近有很多工作试着通过使用词典来提高Chinese NER的性能。作为代表Lattice-LSTM在多种公共Chinese NER数据集上获得新的benchmark。然而LAttice-LSTM有一个复杂的模型结构,这限制了它在大多需要实时响应的工业领域的应用。

 

干了什幺
本文提出一种 简单但有效
的方法来把词典信息合并到Char Embedding中。

 

怎幺做
这种方法避免设计一个复杂的句子模型结构,对于许多NER模型,它只需要对字符表示做简单的调节就能引入词典信息。

 

做的还不错

 

我们在4个标准Chinese数据集上实验,结果显示我们的模型不仅速度快于其他模型,同时性能也达到最佳。

 

Introduction

 

指出Chinese NER的问题及常规做法
对于词能够被自然分割的语言(比如英语有空格),NER自然被建模为一个序列标注问题,并在LSTM等神经模型上取得了最佳性能。Chinese NER相比之下更难,因为句子无法被自然分割。因此一个常规的尝试是把对句子用CWS进行分词,然后在分词好的句子上用一个词级别的序列标注模型。然而,CWS不可避免会错误的对目标语句分割,进而导致实体边界检测错误和实体类别预测错误。因此,一些方法采用字符级别Chinese NER,并验证这个方法是有效的。

 

Baseline做法
完全使用纯字符级别NER的一个缺点是无法完全利用词信息。基于这个思考,2018年的Lattice-LSTM将词典合并到字符级别的NER,此外,作者建议保留与该字符匹配的所有单词,让后续的NER模型决定应用哪个单词,而不是在字符匹配词典中的多个单词时启发式地为该字符选择一个单词。为了验证这个idea,他们提出一个精心修改的LSTM-CRF序列模型层。在四个Chinese NER数据集上验证了模型的有效性。

 

Baseline问题

 

Lattice—LSTM模型过于复杂,为了加入词典信息而对不相邻字符加了很多边,使得模型训练和预测速度变慢。此外,难以将Lattice-LSTM转移到用于特定任务的其他神经架构,比如CNN,Transformer。

 

本文的具体做法
本文提出一个简单的方法来实现Lattice-LSTM,将每个字符的所有匹配词合并到字符级别NER模型。

 

第一个设计原则是获得更快的推理速率。为了实现这个原则,作者首先把词典信息编码到字符表示,接着设计一个编码规则来尽可能的保留词典匹配结果。与baseline相比,该方法尽可能的避免了复杂的模型架构,且它更容易配置,而且能够很快的适应任何神经NER模型。只通过调节字符表示层即可。此外,消融实验验证了我们的模型能够合并更完整和独特的词典信息,并且引入更有效的词权重策略。

 

本文的贡献

 

 

    1. 提出一个简单高效的方法来将字典信息融入字符表示

 

    1. 该方法能够转换到不同的序列标注模型框架,而且容易与预训练模型合并。

 

 

Background

 

背景知识

 

Softword Feature

 

Softword技术一开始用于将分词信息合并到下游任务去,它通过添加该字符对应的分词label embedding信息来增强char embedding


其中
表示字符cj对应的分词标签,

表示对seg标签做embedding,标签类型一共有B,M,E,S四种。但是存在一个问题,就是有的数据集不会给正确的分词标签,而且分词结果是分词器的输出。因此分词错误不可避免被引入该方法。

 

Lattice-LSTM

 

Lattice-LSTM为了实现把词典信息融入到字符级别的NER模型中,做了以下的设计:对于原句子的一个子串,如果匹配到了词典的一个词,那幺就把它的头尾连一条边。因此通过字符与其他字符相连实现一个字符的所有词典匹配结果保留。但是,这实际上把一个句子的输出形式由一个链变成了图。

 

那幺,为了建模基于图的输入,Lattice-LSTM就设计了一个特定的LSTM结构,通过以下公式进行更新:


其中,
代表句子s下所有以字符
为终点的词典匹配子串, 表示
对应的隐藏状态列表,

表示对应的cell列表。f是Lattice-LSTM更新的简单表示。

优点

1. 保留了所有可能的词典匹配结果,避免了启发性选择一个匹配结果给每个字符所引入的错误传播

 

2. 引入了预训练模型,提高了性能

缺点
1. 模型需要对 ,

更新建模,降低了训练和预测速率。

 

2. 由于更新状态函数f过于复杂,使得Lattice-LSTM无法并行处理多个句子,即batch_size=1

 

基于以上对两个缺点,限制了其在工业界对应用。

 

Approach

 

本文主要在保留Lattice-LSTM优点条件下,解决它的缺点。因此,本文提出一种简单高效的方法,称为SoftLexicon。该方法只需要简单调节NER的char表示层,其他结构与常规NER一样。下面是整个模型的框架图

Character Representation Layer

 

一开始的char embedding有两种方法:

Char:
Char+bichar:

用bigram能够增强字符表示

 

Incorporating Lexicon Information

 

这一步主要是把词典信息加到char embedding中,在这里本文提出两种做法:ExSoftword和SoftLexicon。首先做两个定义:输入句子为
,对于输入的子串:

 

对于 ExSoftword
,就是Softword技术的一个直接扩展。这里不只是对每个字符选择一个分词结果,而且保留所有分词结果。具体公式如下:


其中
表示字符cj相关的所有分词标签 ,

是一个维度为5的多重独热向量,每个维度对应B,M,E,S,O

 

下面是一个running example

可以看到对于西这个字符,它命中了词典的“山西”和“中山西路”,因此它对分词结果标签就是E和M,进行如下更新
,其中
= {0,1,1,0,0}。

 

这个方法存在两个问题,一个是它无法用到预训练词模型,另一个它确实了匹配信息,模型不知道这个句子是匹配到了”中山,山西,中山西路“还是”中山,中山西,山西路“

 

为了解决这两个问题,本文提出另一个方法 SoftLexicon
,首先看下running example

可以看到这里的词集合能够使用word embedding,同时不确实匹配信息。 接下来具体说下做法:

 

首先对于一个输入句子s的一个字符,对它的所有匹配词做分为BMES四个类,得到4个词集合,具体公式如下:

其中L表示词典。

 

接着对词集合做压缩,主要是把每个类别的word embedding压缩为一个embedding,这里介绍两种方法,S表示词集合。

词平均:
词加权:
,其中

词加权是由于词平均对性能一般而提出的方法,这里并不是attention那种动态权重,而是使用每个词在一个静态数据集上出现的频率作为权重,是一个静态权重。这样能够加快训练速率。注意这里的对于一个词集合的权重归一化时会考虑所有词集合。

 

一般来说,静态数据集来自于训练数据和验证数据。注意,如果包含子串w的子串a被匹配,w的频率不会增加。

 

最后是将词典信息合并到字符表示上,通过以下公式:

Sequence Modeling Layer和Label Inference Layer

 

Sequence Modeling Layer主要使用常规的模型,如BiLSTM,CNN,Transformer,本文使用一个单层的BiLSTM。

 

Label Inference Layer主要使用条件随机场来预测输出序列。

 

Experiments

 

实验配置如同Lattice-LSTM,分别在四个Chinese NER数据集上做测试,包括OntoNotes,MSRA,Weibo NER,Resume NER。

 

Computational Efficiency Study

表2可以看出本文的方式的速度是Lattice-LSTM的6.15倍,加了bert还是快。从图可以看出,随着句子长度的提升,本文的方法的推理速率还是要高于Lattice-LSTM和LR_CNN。

 

Effectiveness Study

表3-6是SoftLexicon在四个数据集上的结果,可以看到,性能基本是达到最佳。对于表3,Gold seg是指有正确的分词标签,Auto seg分词标签由分词器给出,No seg即没有分词标签。从No seg可以看出ExSoftword还是有一些效果的。当分词标签是由分词器给出来的时候,Word-based (LSTM)的性能下降很多(75.77下降到71.70),可以看出分词结果对模型的影响。最后,从表3-6可以看到本文提出的方法能够很好的合并预训练模型,得到性能的提升。

 

Transferability Study

表7主要是对不同的序列模型做实验,可以看到LSTM是要优于CNN和Transformer的,此外SoftLexicon在不同的模型上都要好于ExSoftword。

 

Ablation Study

这里做了四个消融实验

 

1. 首先是去掉了词集合中的M类,由于baseline是忽略中间信息,而本文防止了这种信息损失,实验也验证了。

 

2. 把bmes四个类别去掉,直接把对所有匹配到的词加权,通过实验验证了类别信息的重要性。

 

3. 这里对词集合做压缩时的词加权方法换成了词平均,验证了词加权的方法比词平均要好。

 

4. 这是主要是在词加权的时候,每个词的权重归一化不再对所有词考虑,而只是考虑一个词集合内的词。实验验证,考虑所有词要优化该方法。

 

Conclusion

 

本文提出了一种方法,主要解决了在Chinese NER上利用词典的计算效率问题,同时提升性能。

 

个人认为创新:主要解决了Lattice-LSTM的运行效率问题,同时提高了模型的性能。

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注