论文地址:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9160451
代码地址:
Abstract
命名实体识别(NER)是自然语言处理(NLP)中的一项基本任务,但由于汉语的特殊性和复杂性,在汉语中的命名实体识别仍具有较大的挑战性。传统的中文命名实体识别(Chinese NER)方法需要繁琐的特征工程和特定领域的知识来实现高性能。在本文中,我们提出了一个简单而有效的神经网络框架,称为A-NER。A-NER是第一个将自我注意机制与多嵌入技术相结合的双向门控递归单元条件随机场(BiGRU-CRF)模型。它可以从不同粒度(如部首、字符、单词)中提取更丰富的字符语言信息,并发现序列中字符之间的相关性。此外,A-NER不依赖任何外部资源和手工制作的功能。实验结果表明,在不同的领域数据集上,我们的模型优于(或接近)现有的最新方法。
I. INTRODUCTION
在本文中,为了解决上述问题,我们研究了一个结合自我关注和多嵌入技术的BiGRU-CRF模型a-NER。对于一个输入句子,为了使用背景知识,我们在一个大型语料库上使用预训练嵌入来初始化字符和单词嵌入,并随机初始化部首嵌入。多嵌入层从不同粒度(从部首级、字符级到单词级)捕获字符的语义信息。它由三部分组成:(i)卷积神经网络(CNN),将每个字符的部首组成信息编码到其部首级嵌入中;(ii)利用序列的顺序,在字符嵌入中加入位置编码,得到字符级嵌入;(iii)(GRU Conv)网络,生成单词级word-level嵌入,以根据单词上下文学习更高级别的特征。然后,将这些嵌入连接起来并馈送到自关注层,以生成最终的字符表示。自我注意机制能够自动关注与汉语NER相关的特定字符,并发现字符之间的相关性。最后,BiGRU CRF网络将最终字符表示作为输入来执行序列标签预测。
本文作出以下贡献:
我们提出了一种基于自我注意和多重嵌入的汉语新词语的BiGRU-CRF框架,该框架可以学习汉字更丰富的语义特征,并捕获序列的结构信息。
A-NER是一种简单、有效、端到端的模型,可以轻松地应用于从NER派生的其他任务。
A-NER不需要特征工程和外部资源,实现了卓越的性能。
本文的其余部分组织如下。第二节介绍了相关工作。第三节介绍了我们的中文NER模型。第四节介绍了实验装置和结果。第五部分对本文进行总结。
III. MODELARCHITECTURE
总体上,它可以分为四个部分:多嵌入层、自我注意层、Bi-GRU编码层和CRF解码层。
图1.A-NER的总体模型架构。对于输入句子,我们首先使用多嵌入层来获得部首级、字符级和单词级嵌入。这些嵌入被连接起来以形成字符的最终表示形式。然后,将最终的表示反馈给自我注意层,以捕获角色之间的相关性。自我注意层的输出被用作Bi-GRU层的输入,以学习上下文特征。最后,CRF层预测标签序列。
A. Multi-Embeddings Layer
多嵌入层负责从不同粒度中更丰富地提取序列中每个字符的语义特征。对于第$i$个字符,我们将部首级、字符级和单词级嵌入连接起来,形成最终的字符表示$x_i$。它被构造为$\mathbf{x}_{i}=\left[\mathbf{x}_{\mathbf{r}} ; \mathbf{x}_{\mathbf{c}} ; \mathbf{x}_{\mathbf{w}}\right]$,其中$\mathbf{x}_{\mathbf{r}} \in \mathbb{R}^{d_{r}}, \mathbf{x}_{\mathbf{c}} \in \mathbb{R}^{d_{c}}$和$\mathbf{x}_{\mathbf{w}} \in \mathbb{R}^{d_{w}}$分别是部首级、字符级和单词级嵌入。
1)Radical-Level Embedding:
在中国语言学中,由于汉字的象形词根来自古代汉语,所以每个汉字在语义上都是有意义的。直观地说,每个汉字都可以分解成更小的原始部首,这些部首包含了汉字本身的固有特征和语言信息。例如,字符“江” 及"汗” 同根”氵” 那是汉字的变体。”水”, 表示它们都有与水有关的含义。同时,其他部首“工” 及"干” 因此,字符的部首序列有助于在向量空间中反映它们的特征。
我们设计了一个CNN来提取字符部首序列的局部上下文特征,使得部首级嵌入对字符的拼写敏感。汉字的部首成分可从在线新华字典中获得。图2示出了获得字符的部首级嵌入$x_r$的过程。对于每个汉字的部首序列$\mathbf{R}=\left(\mathbf{r}_{1}, \mathbf{r}_{2}, \ldots, \mathbf{r}_{l}\right)$,其中$l$是部首的数量,我们执行卷积和最大池运算:
$\mathbf{x}_{\mathbf{r}}=\operatorname{Maxp}(\operatorname{Conv}(\mathbf{R}))$
其中$\mathbf{x}_{\mathbf{r}} \in \mathbb{R}^{d_{r}}$,使用它不仅可以让我们获得有关字符的基本组成信息,而且还可以在某些字符很少出现或从未出现时概括模型的性能。
图2.卷积神经网络用于提取每个汉字的部首级上下文特征。以角色为例“朝” 例如,它可以分解成四个*基:十”, “日”, “十” 及"月”. 然后,将这些初始部首嵌入馈送给CNN,以获得字符的部首级嵌入。”朝”.
2)Character-Level Embedding:
汉字是汉语的基本单位,可以表达清楚的意思。每个句子或单词都是由字符组成的,因此有必要利用字符所固有的丰富语义。此外,句子中字符的顺序至关重要,而随机字符则毫无意义。为了利用序列的顺序,我们将“位置编码”[16]添加到字符嵌入中,以注入一些关于序列中字符的相对或绝对位置的信息。
对于输入字符序列$\mathbf{C}=\left(\mathbf{c}_{1}, \mathbf{c}_{2}, \ldots, \mathbf{c}_{n}\right)$,其中$\mathbf{c}_{i} \in \mathbb{R}^{d_{p}}$是原始字符嵌入,$n$是序列长度。我们使用不同频率的正弦和余弦函数直接构造具有相同维度$d_p$的位置编码:
$P E_{2 k}(p o s)=\sin \left(p o s / 10000^{2 k / d_{p}}\right)$
$P E_{2 k+1}(p o s)=\cos \left(p o s / 10000^{2 k / d_{p}}\right)$
其中$pos$是位置,$k$是尺寸。也就是说,位置编码的每个维度对应于一个正弦曲线。
我们选择正弦版本,因为它可能允许模型外推到更长的序列。与学习到的位置嵌入相比,它不引入额外的参数,并且产生几乎相同的结果。然后,我们将位置编码连接到原始字符嵌入,作为字符级嵌入:$\mathbf{x}_{\mathbf{c}}=\left[\mathbf{c}_{i} ; \mathbf{P} \mathbf{E}_{i}\right]$,where $\mathbf{x}_{\mathbf{c}} \in \mathbb{R}^{d_{c}}, d_{c}=2 d_{p}$.
3)Word-Level Embedding:
词是汉字的高级表征,体现了句子的语言特征和逻辑规则。但是,一个单词可能包含多个字符。为了对齐每个单词和字符,我们按组成单词的字符数复制单词。例如,在单词“中国”, “中” 及"国” 与“中国””的相同原始单词一致, 这反映了它们的共同上下文和使用场景。
为了捕获单词序列中包含的语言信息并减少分词错误,我们使用了GRU-Conv网络。它由双向GRU层和卷积层组成。首先,原始单词嵌入$w_i$被馈送到BiGRU层:
$\mathbf{M}=\operatorname{BiGRU}\left(\mathbf{w}_{1}, \mathbf{w}_{2}, \ldots, \mathbf{w}_{n}\right)$
BiGRU可以学习单词之间的远距离依赖关系。然后,卷积层获取output $M$作为输入以提取本地上下文特征:
$\mathbf{N}=\operatorname{Conv}(\mathbf{M})$
最后,字级嵌入表示为$\mathbf{x}_{\mathbf{w}}=\mathbf{N}_{i}$,其中$\mathbf{x}_{\mathbf{w}} \in \mathbb{R}^{d_{w}}$.
B. Self-Attention Layer
传统的嵌入表示方法没有考虑字符之间的相关性,导致输入序列中的信息没有得到充分利用。为了解决这个问题,我们使用一种自我注意机制[16]来深入提取词汇特征和语义信息。该机制可以自动聚焦于在中文NER中起重要作用的特定字符,并在忽略无用信息的情况下发现序列中的关系。
当模型处理每个字符(例如,序列中的每个位置)时,自我注意允许它将注意力集中在输入序列中的其他位置,以获得有助于为该字符提供更好编码的线索。换句话说,它将其他相关字符的“理解”结合到我们当前正在处理的字符中。
对于多嵌入层的输出$\mathbf{X}=\left(\mathbf{x}_{1}, \mathbf{x}_{2}, \ldots, \mathbf{x}_{n}\right)$,向量矩阵$X$通过分别乘以训练的权重矩阵$\mathbf{W}^{Q}, \mathbf{W}^{K}, \mathbf{W}^{V}$映射到查询query $Q$,keys $K$和values $V$ matrix。然后将Q、K、V输入缩放点积注意函数,生成输出矩阵$\mathbf{X}^{\prime}$,如下所示:
$\operatorname{Attention}(\mathbf{Q}, \mathbf{K}, \mathbf{V})=\operatorname{softmax}\left(\frac{\mathbf{Q K}^{\mathrm{T}}}{\sqrt{d_{k}}}\right) \mathbf{V}$
where $d_k$ is the dimension of $K$.
第一步是通过计算query与所有keys的点积来计算字符之间的相关性分数,确定对字符编码时句子中其他字符的关注度。它将分数除以$\sqrt{d_{k}}$,这将导致更稳定的梯度。然后应用softmax来获取值的权重,这意味着每个字符在该位置的表示量。最后,我们将加权值向量相加,生成self-attention输出。
C. BiGRU Layer
在通过自我关注层获得字符相关性后,我们使用BiGRU层学习序列中的上下文特征和长距离依赖。对于输入序列$\mathbf{X}^{\prime}=\left(\mathbf{x}_{1}^{\prime}, \mathbf{x}_{2}^{\prime}, \ldots, \mathbf{x}_{n}^{\prime}\right)$,它返回一个上下文序列$\mathbf{H}=\left(\mathbf{h}_{1}, \mathbf{h}_{2}, \ldots, \mathbf{h}_{n}\right)$.
BiGRU层由前向GRU网络和后向GRU网络组成。它们是具有不同参数的两个不同网络。前向GRU计算一个每个字符$t$处序列的左上下文表示$\overrightarrow{\mathbf{h}_{t}}$,。类似地,反向GRU计算正确的上下文表示$\overleftarrow{\mathbf{h}_{t}}$从相反的方向。字符的上下文表示形式是通过连接其左上下文表示形式和右上下文表示形式形成的,$\mathbf{h}_{t}=\left[\overrightarrow{\mathbf{h}_{t}} ; \overleftarrow{\mathbf{h}_{t}}\right]$.
D. CRF Layer
尽管隐藏的上下文向量$h_t$可以直接为每个output $y_t$做出独立的标记决策,但由于语法规则(例如,I-ORG不能跟在B-PER后面),输出标签之间存在强烈的依赖性。对于NER,考虑邻域中标签之间的相关性并联合解码标签的最佳链是有益的。CRF[9]是一个遵循马尔可夫特性的概率图模型,它关注句子层面,而不是单独解码标签。结果表明,CRF通常可以产生更高的标记精度。因此,我们使用CRF对它们进行联合建模。
给定一个通用句子$\mathbf{X}=\left(\mathbf{x}_{1}, \mathbf{x}_{2}, \ldots, \mathbf{x}_{n}\right)$,预测prediction序列$\mathbf{y}=\left(y_{1}, y_{2}, \ldots, y_{n}\right)$的分数定义为:
$s(\mathbf{X}, \mathbf{y})=\sum_{i=0}^{n} A_{y_{i}, y_{i+1}}+\sum_{i=1}^{n} P_{i, y_{i}}$
其中$P$是BiGRU输出的分数矩阵,$P_{i,y}$表示Tag $y_i$的第$i^{th}$字符的分数。$A$是由CRF生成的转移分数矩阵,$A_{y_{i}, y_{i+1}}$表示从tag$y_i$到tag$y_{i+1}$的转移分数。然后,所有可能的标记序列$Y_{X}$上的softmax将确定序列$y$的概率:
$p(\mathbf{y} \mid \mathbf{X})=\frac{e^{s(\mathbf{X}, \mathbf{y})}}{\sum_{\mathbf{y}^{\prime} \in \mathbf{Y}_{\mathbf{X}}} e^{s\left(\mathbf{X}, \mathbf{y}^{\prime}\right)}}$
在训练过程中,最大化正确标签序列的log-probability。在解码时,我们预测得到的分数最大的最优标签序列为:
$\mathbf{y}^{*}=\underset{\mathbf{y}^{\prime} \in \mathbf{Y}_{\mathbf{X}}}{\arg \max } s\left(\mathbf{X}, \mathbf{y}^{\prime}\right)$
在解码过程中,我们只对输出之间的双元交互进行建模model bigram interactions between outputs,并采用维特比算法。
IV . EXPERIMENTS
在本节中,我们将详细介绍我们的实验数据集、设置和结果。
A. Experimental Setup
Datasets.
我们在两个数据集上评估了我们的模型。对于社交领域,我们使用标准的微博NER数据集[13],其中包含大量不规则的口语使用,包括命名和名义提及。对于新闻领域,我们在一个正式的MSRA新闻数据集[11]上进行了实验,该数据集只包含命名实体。这两个语料库分别分为训练、开发和测试集,如表一所示。
Pretrained Embeddings.
在相关的工作[6]、[13]、[17]之后,我们使用Jieba工具包进行分词。字符嵌入和单词嵌入使用腾讯AI Lab[https://ai.tencent.com/ailab/nlp/embedding.html]提供的预训练嵌入进行初始化。此外,我们还从在线新华字典中获得了汉字的部首成分。这些部首嵌入和词汇表外单词都是以均匀分布随机初始化的。我们将微调这些初始嵌入,通过反向传播在梯度更新期间修改它们。
Parameter Settings.
使用标准的“Adam”算法进行参数优化。所有嵌入件的尺寸相同,其中$d_r=d_p=d_w=200$。我们将GRU的隐藏状态大小设置为150。对于CNN,我们使用200个窗口大小为3的过滤器filters。为了减少过度拟合,我们采用dropout方法和提前停止来规范化我们的模型。我们将所有dropout layers(如CNN、BiGRU)的dropout rate固定为0.5。
Evaluation Metrics
在本文中,我们使用IOB(内部、外部、开始)标记方案。标准精度(P)、召回率(R)和F1分数(F1)用作评估指标。根据development set的损失,在每个实验中应用提前停止。我们在每个数据集上运行五个实验,计算平均精度、召回率和F1分数。
B. Experimental Results
本节介绍了实验结果并讨论了它们的含义。
1) 微博数据集:微博数据集的结果如表二所示。显然,我们提出的方法实现了状态性能。与最佳基线[17]相比,A-NER的准确率提高了2.97%,召回率提高了2.13%,F1成绩提高了2.93%。其原因如下:(1)多嵌入层充分利用了词根、字符和单词层面的语义信息;(ii)自我注意机制能够有效捕捉角色之间的相关性。通过以上方法,我们可以获得更丰富的句子中字符的语义特征和结构信息。
在表II的第二部分,我们给出了基线(即A-NER去除自我注意层)和A-NER的结果。我们观察到,自我注意机制可以有效地提高模型的性能。
2)MSRA Dataset:
表三显示了MSRA数据集上的实验结果。现有最先进的系统[19]研究了一种晶格结构的LSTM模型,以将词典信息纳入神经网络。该模型的准确率为93.57%,召回率为92.79%,分数为93.18%。然而,由于它使用的是外部的词汇数据,因此由于一些噪声词的存在,词汇的质量会影响到汉语NER的性能。
我们的模型的性能略差于晶格结构的LSTM,但优于所有其他方法。A-NER的准确率、召回率和F1成绩分别为93.28%、92.16%和92.71%。原因是A-NER在如此庞大的数据集上学习能力不足,因为它相对简单。总的来说,A-NER非常有效和健壮,在没有任何外部资源和精心设计的功能的情况下,它可以达到具有竞争力的结果。
V. CONCLUSION
在本文中,我们提出了一个结合自我关注和多重嵌入的BiGRU-CRF框架,以解决中国NER面临的挑战。对于输入序列,A-NER可以从多粒度中提取字符的语义信息,并学习字符之间的相关性。因此,我们的模型比以前的工作获得了更丰富的语言信息,并且不需要大量特定于任务的知识。所提出的模型在不同的数据集上进行了评估,并取得了最先进的或具有竞争力的性能。