方晔玮,王铭涛,陈文亮, 张熠天,张 民
(1.苏州大学 计算机科学与技术学院,江苏 苏州 215006;2.国家工业信息安全发展研究中心,北京 100043)
命名实体识别(Named Entity Recognition,NER)是信息抽取和自然语言理解中的基础任务之一。近年来,神经网络方法显著提高了命名实体识别的性能[1-3]。但是,在实际应用场景下,当文本所属领域不同于训练语料时,深度神经网络模型往往展现出较弱的知识泛化能力[4]。因此,跨领域命名实体识别仍是一项具有挑战性的工作。
现有工作探索的方法大多假设目标领域有一定量的标注数据[5-6]。有些人借助多任务学习的方式,学习不同领域文本之间的共有特征[7-8],有些人用源领域的模型参数初始化目标领域的模型[9-10]。但是,有时目标领域标注数据的获取代价非常高昂,无法应用上述方法进行领域迁移。因此,这是一种更困难的场景: 源领域有大量人工标注数据,而目标领域仅有无标注数据。本文主要关注这一场景。
命名实体识别的领域自适应主要有以下两方面困难: ①实体名多样,目标领域会出现大量源领域中未出现过的新实体; ②语言表达差异较大,不同于新闻领域规范的语言表达,各领域语料的数据分布迥异,如社交文本口语化现象严重,医疗领域的文本则带有大量的专业术语和表达。针对第一点,本文引入一个实体词典作为外部知识,辅助模型的判断。针对第二点,本文提出一种有效且易于实现的方法,快速自动地生成目标领域的弱标注语料,并在该弱标注语料上训练模型,从而避免模型拟合源领域数据分布。
在本文方法中,为了提高弱标注语料的准确率,我们使用实体词典和源领域数据训练的模型同时对目标领域的无标注数据进行标注。由于两者的标注结果都存在很多错误信息,我们仅保留高置信度的标签,对于不确定位置采用特殊标签,得到局部标注语料。我们应用局部标注学习在这个新构建的语料上训练模型参数。
综上,本文贡献如下:
(1)针对目标领域无任何人工标注语料的跨领域场景,本文提出了一种快速自动构建目标领域弱标注数据的方法。主要特点是采用两种类型标签来表示置信度的高低,自动构建局部标注语料。并基于此提出了一种简单有效的命名实体识别领域适应方法。
(2)本文第一次将局部标注学习应用到跨领域命名实体识别任务中,使用自动构建的局部标注语料进行训练。实验证明,本文方法的领域自适应能力显著优于基线方法。并且在使用ELMo和BERT语言模型的条件下,所提方法仍然表现出较好性能。
近些年,神经网络被成功地应用到命名实体识别任务中,并且获得了到目前为止的最优性能。不同于英文,中文中的词没有天然界限,并且Liu等[11]证明了中文命名实体识别任务中,基于字是更好的选择。因此,本文采用基于字的BiLSTM-CRF模型作为基础模型。
现存的跨领域命名实体识别工作大多数设置在有监督场景下,即源领域和目标领域都存在人工标注数据。Yang等[8]借助多任务学习框架,尝试共享目标领域模型和源领域模型的表示层和编码层,联合学习任务相关、领域无关的特征来实现知识的迁移。Lin等[9]假设不同领域的特征空间是异构的,通过在模型的层间添加适应层,使得模型训练在同一个特征空间中进行,改进了简单的多任务学习方法和参数初始化方法(用源领域模型的参数初始化目标领域模型)。在目标领域没有人工标注数据时,这些方法由于缺乏对目标领域无标注数据的利用,都退化为了仅在源领域数据上训练模型,无法进行有效的领域迁移。而本文提出的模型同时利用了源领域的标注数据和目标领域的无标注数据。
Ruder等[12]从数据角度入手,使用自举的方法,利用模型本身对无标注语料的预测值,来获得更多训练时可用的额外信息,从而迭代地提高目标领域的序列标注模型性能。基于自举的方法常常会受制于错误传播,尤其是当初始数据不足以训练一个好的模型时。所以,本文没有选择迭代自举方法。
Yang等[13]第一次将局部标注学习应用到命名实体识别任务中,用于解决噪声训练数据的问题。Greenberg等[14]在生物命名实体识别中,证明了在不完全标注数据的情况下,相比于简单粗暴地置为单标签,局部标注学习的建模方式更有效。局部标注学习在分词的领域适应上已经得到了成功的应用[15-16]。虽然分词和命名实体识别同为序列标注任务,但是在领域迁移的场景下,超链接、标记等能提供天然标注的分词边界,命名实体识别中天然标注的获取则要困难得多。据我们所知,本文是第一个将局部标注学习应用到跨领域命名实体识别中的工作。
本文采用Lample等[1]的做法,将BiLSTM-CRF模型作为基础模型。模型的整体结构如图1所示。
图1 BiLSTM-CRF模型
给定句子C=(c1,c2,…,cn),表示层根据字向量映射表,将离散的字映射为连续的向量表示(x1,x2,…,xn)。映射表以预训练字向量初始化,并在模型训练过程中作为参数更新。为了控制预训练的可变性,本文统一使用Li等[17]提出的通用中文字向量。
作为RNN的一个变种,LSTM[18]在保留RNN长距离依赖抓取能力的同时,解决了RNN梯度消失的问题。在第t个时间步,LSTM单元的更新公式如式(1)~式(6)所示。
其中,σ()是sigmoid函数,“·”表示向量点积。xt表示第t个时间步的输入,即第t个字的字向量。ht表示第t个时间步的隐状态,即LSTM对第t个字的编码表示。it、ot、ft、ct分别表示t时刻的输入门、输出门、遗忘门和单元状态向量。Ui、Uf、Uo、Uc表示应用于xt的不同门的权重矩阵,Wi、Wo、Wf、Wc表示应用于ht-1的不同门的权重矩阵,bi、bo、bf、bc表示不同门的偏置向量。
(7)
我们将编码层的输出作为分类层的输入,根据式(8)计算得出句子中每个字对应各标签的概率P。
P=Wmlpht+bmlp
(8)
其中,Wmlp和bmlp表示分类层的参数。
在训练语料全标注的情况下,句子中的每个字都有一个明确的标签。若句子的标签序列y=(y1,y2,…,yn),则定义该句的得分为
(9)
其中,A是记录转移分数的矩阵,Ai,j表示从标签i转移到标签j的分数。P是分类层输出,Pi,yi表示第i个位置标记为标签yi的分数。训练时,模型优化参数以最大化正确标签序列的可能性,即
(10)
其中,yr表示正确的标注序列,YC表示输入为C的情况下所有可能序列的集合。解码时,根据式(11)求解模型的预测序列,即
(11)
为了减小数据分布不同带来的迁移困难,本文采用两种手段同时标注目标领域的无标注数据,交叉对比后,生成高置信度的弱标注语料。弱标注语料包含不确定标签,普通CRF层无法对其建模,本文引入局部CRF来解决这个问题。
3.1.1 实体词典
在命名实体识别任务中,词典是一种重要的外部知识。本文在利用外部词典时,借助两种匹配机制来寻找句子中可能出现的实体。
第一种匹配方式是简单的前向最大匹配,和中文分词中使用的正向最大匹配非常类似。算法从左到右扫描整个句子,对于句子的每个位置,尝试找到与词典条目匹配的最长子串。如果匹配成功,则将该子串标记为实体;如果匹配失败,则将该字标记为“O”。第二种匹配方式是逆向最大匹配,等价于将句子逆序,将词典中的词逆序,进行正向最大匹配。
为了减少单一匹配机制可能带来的错误,我们仅保留两种匹配机制匹配结果达成一致的完整实体作为目标领域无标注语料的词典标注结果。
3.1.2 源领域模型
在领域迁移的场景下,通常源领域的训练数据是较为充足的。因此,我们在源领域数据上训练得到一个模型,作为领域迁移时的先验知识。
在迁移到其他领域时,不需要重新训练源领域模型,直接利用该模型标注目标领域的无标注文本,作为源领域知识在目标领域上的体现。
3.1.3 交叉对比
基于词典匹配的方法具有两个缺点。第一,实体形式多样,实体词典对文本内实体的覆盖度不可能达到很高;第二,词典匹配不考虑上下文限制,仅进行简单的字符串匹配,中文的多义性会给匹配结果带来较多的错误标注。同时,由于领域改变,数据分布、上下文特征等等都发生了变化,源领域模型在预测目标领域文本时,性能也会严重下降。
为了降低错误的影响,我们对比两个标注结果,保留两种方法达成一致的标签;把产生冲突的位置标为“U”,意为“Unknown”,即这个字的标签不确定,可以是任何可能的标签。所得结果就是最终的目标领域弱标注语料。
表1展示了目标领域为社交媒体时各个方法的标注结果。词典中不存在“孙仲谋”,所以无法标注出人名“孙仲谋”。而新闻领域语料训练的模型没有见过多符号的语法错误语句,将“/”标注为了人名。交叉对比间接地过滤掉了这两处错误标注,最终生成的弱标注语料中,确定的标签都是完全正确的。当然在实际匹配中,确定标签也可能会存在错误。
表1 自动标注方法示例
在局部标注数据中,有些位置的标签值确定,有些位置的标签可以为多个值,因此,句子的正确标签序列可能不止一条。如图2所示,句子对应的局部标注数据形式为({B},{B,I,E,O,S},{B,I,E,O,S},{O},{O},{O},{O},{O}),认为正确的标签序列一共有5×5=25条。
图2 局部标注示例
我们遵循Tsuboi等[19]的方法对局部标注数据的边缘概率建模。给定句子C=(c1,c2,…,cn),假设对应的局部标注序列L=(L1,L2,…,Ln),其中,Li是标签集合的非空子集,包含ci可能对应的标签。定义YL为所有正确序列的集合,YC为所有可能序列的集合。“所有正确序列”指序列中的一部分标签是已知确定的,其余位置可以是任意标签,例如,图2中YL大小为52;“所有可能序列”指序列的每个位置都可以是任意标签,例如,图2中YC大小为58。若y=(y1,y2,…,yn)为YL中的某一条,则
∀y∈YL,yi∈Li
(12)
与全标注数据的训练目标类似,在训练基于局部标注数据的模型时,我们希望最大化所有正确序列分数之和的概率,如式(13)、式(14)所示。
解码时,应用维特比算法寻找分数最高的序列作为模型预测结果。
该损失函数仍然适用于全标注数据。当集合YL大小为1时,即只有一条正确序列,对应全标注数据的情况。因此,模型可以同时处理全标注数据和局部标注数据。
我们在新闻领域到社交领域和新闻领域到金融领域的迁移实验中验证本文方法的有效性。评价指标采用标准的准确率P、召回率R和F1值。
源领域设置为新闻领域,采用MSRA数据集[20]作为源领域标注数据。
目标领域设置为微博文本和金融人物简历文本。社交领域的标注数据来自Weibo NER[21],我们从新浪微博网页(1)https://www.weibo.com中爬取额外的数据(共1 200 000句),从中随机抽取40 000句作为目标领域无标注数据。Weibo NER人工标注的测试数据集较小,结果存在不稳定现象,所以除了在常见数据划分(Weibo-STD)上进行实验外,我们重新划分了该数据,扩大测试集,命名为“Weibo-Recut”。由于在领域自适应实验中不需要目标领域的人工标注训练语料,我们将Weibo-STD的训练集、开发集和测试集顺序混合,把序号为偶数的句子作为Weibo-Recut的开发集,序号为奇数的句子作为Weibo-Recut的测试集。
金融领域的标注数据来自Resume-NER[22],我们使用标准划分的测试集进行评价,从新浪财经网页(2)https://finance.sina.com.cn/爬取额外的数据,作为目标领域无标注数据。
类别由于MSRA和Weibo NER之间存在标注规范差异,我们仅选取规范较为一致的类别作为实验对象,即MSRA内的人名(PER)类别和Weibo NER内的PER.NAM类别。上述人名(PER)主要针对中文形式的人名,包括外国人名的中文音译,如“克林顿”“马拉多纳”。
我们还选取MSRA内的组织机构名(ORG)类别和ResumeNER内的ORG类别作为实验对象。最终数据集统计如表2所示。
表2 数据集统计
词典我们收集百度百科内有关人物的词条名,设计一些规则对词条名清洗后得到最终的人名词典。该词典共包含987 309条人名。
组织机构名词典来自Company-Names-Corpus(3)https://github.com/wainshine/Company-Names-Corpus,共包含6 220 471条公司名和机构名。
Dict_Based: 使用3.1.1节介绍的方法进行词典匹配。(基线方法)
Source_Train: 源领域的训练集作为训练数据。(基线方法)
Source_Pred: 源领域模型对目标领域无标注数据的预测结果作为训练数据。(基线方法)
Unlabel_Part: 目标领域的弱标注数据作为训练数据。
Mix: 混合目标领域的弱标注数据和源领域的训练集作为训练数据。
Train+Pred: 混合源领域的训练集和源领域模型对目标领域无标注数据的预测结果作为训练数据。
+ELMo: 按照式(15)得到ELMo[23]对句子的特征表示,拼接至表示层的输出,作为编码层的输入。
(15)
+BERT: 按照式(16)得到BERT[24]对句子的特征表示,拼接上表示层的输出,作为编码层的输入。
(16)
超参: +ELMo的模型采用Adam优化器,学习率设置为0.001。其他全部实验采用如表3所示的超参数,并依据开发集表现实行早停策略。
表3 超参数设置
开发集: MSRA没有包含开发集,因此本文把MSRA的测试集当作开发集,在Weibo-STD、Weibo-Recut和Resume的测试集上测评结果。
最终实验结果如表4所示。从表4中,我们可以发现如下现象:
表4 领域适应实验结果
Source_Pred使用源领域模型自动标注的目标领域文本训练,没有产生任何额外标注成本。但是,Source_Pred的性能甚至比人工标注的源领域数据(Source_Train)还要好。可见,当领域间数据分布差异非常大时,相比于在源领域数据上训练,在目标领域数据上训练更能捕捉到目标领域的特征,即使目标领域数据是自动生成的。
Unlabel_Part的性能在所有方法中最好,证明了本文方法能显著减少错标的情况。虽然一些标签被置为“U”,但是多条可能路径的建模方式给予了模型更多的联想空间,模型通过猜测这些部分的标签分布,可以减少指定错误标签的影响。最终,相较于基线模型(Source_Train),在不加入语言模型特征时,Unlabel_Part在三个数据集上分别提高了5.85%、6.12%和7.71%。
Mix始终优于基线,在不加入语言模型特征时,在三个数据集上分别提高了3.98%、6.72%和4.64%。证明了即使最简单直接地混合数据,本文方法也能够有效地补充源领域数据缺失的目标领域知识。Mix结果高于Source_Train和Source_Pred,但是在多数情况下低于Unlabel_Part。Mix混合了源领域和目标领域的标注数据,两种领域数据分布存在差异,使得模型训练时会在一定程度上受到源领域数据分布的干扰,最终导致性能略低于仅使用目标领域的弱标注数据。多数情况下Train+Pred高于Source_Train和Source_Pred,但低于Mix。
集成语言模型特征的实验结果如表5所示。语言模型对文本的表征能力都是非常强的,但是强拟合能力的代价可能是较弱的泛化能力。我们使用的ELMo是在新闻语料上训练的(News ELMo),无法学习到目标领域的知识。并且,在训练语料为新闻语料(Source_Train)时,层权重和模型参数都会更倾向于拟合源领域的数据分布,削弱了模型向目标领域的泛化能力。所以,相比于不加ELMo,添加News ELMo后的模型表现甚至更差。
表5 语言模型特征集成的实验结果
在加入News ELMo的实验中,Source_Pred使用的训练语料是Source_Train模型自动标注的,中间存在严重的错误传播,从表中可以看到Source_Train和Source_Pred的准确率都很低。这些错误对模型的负面影响高于ELMo的正面作用,使得Source_Pred性能低于Source_Train。而我们的方法应用交叉对比和局部标注学习,减少了大量错误标注带来的影响,模型是在拟合一个较高质量的目标领域数据集,能够起到正面作用。所以,相比于不加ELMo的方法和+News ELMo的Source_Train,+News ELMo的Unlabel_Part和Mix,性能均有显著提升。
为了验证ELMo所用无标注语料对系统的影响,我们在目标领域无标注语料上重新训练ELMo(Target ELMo),替换News ELMo后重复所有实验。由于金融领域的无标注数据规模较小,不足以训练语言模型,我们仅在微博数据上进行了实验。从表5中可以看出,加入Target ELMo后,各方法的性能全部高于对应的News ELMo的结果和不加ELMo的结果。证明在领域迁移的场景下,ELMo所用训练语料的来源非常重要,目标领域语料训练的ELMo可以提供更多的目标领域知识,而不同分布数据训练的ELMo则会引入噪声信息。
在加入BERT的实验中,由于BERT的训练成本很高,我们无法自行训练。所以,我们采用Wolf等[25]在超大规模语料上训练好的中文BERT。相比于基线方法,Unlabel_Part在3个数据集上分别获得了6.42%、3.51%和5.4%的提升;相比于不集成语言模型特征的Unlabel_Part,Unlabel_Part(+BERT)在3个数据集上分别获得了28.78%、18.61%和3.72%的提升。证明该预训练语言模型受益于本身的模型架构和训练语料的多样性,在具有强大表征能力的同时,也具有强大的泛化能力,能够捕捉较为普遍的语言现象。所以,+BERT的所有结果都显著高于+ELMo和不加入语言模型的方法。
4.5.1 与其他方法的比较
为了更好地说明本文所提出方法的优势,我们在标准切分数据集(Weibo-STD)上,与如下方法进行了比较。
CDNER-LM: 该方法由Jia等[26]提出,在跨领域的命名实体识别任务上达到了目前为止的最优性能。该方法的实验数据设置和本文领域自适应方法一致。
BERT-Finetune: 该方法由Delvin等[24]提出,在全监督的命名实体识别任务上达到了目前为止的最优性能。本实验中,我们直接在目标领域的训练和开发数据上微调BERT。
表6展示了各个系统的比较结果,“*”表示使用了目标领域人工标注数据作为训练语料。在不附加语言模型的情况下,我们的方法显著高于CDNER-LM。这一结果证明本文方法具有更强的领域自适应能力。
表6 与其他方法的比较结果
在加入语言模型BERT后,我们方法的最优性能可以提高到74.18%,仅仅低于全监督方法(BERT-Finetune)1.75%。和BERT-Finetune相比,我们的方法没有用到任何目标领域的人工标注数据,在实践中具有更好的可行性。
4.5.2 无标注数据数量的影响
目标领域无标注语料在本文提出的方法中扮演着重要的角色,因此,我们在Weibo-Recut数据集上,对比了不同规模的目标领域无标注语料对实验性能的影响。图3展示了不加入语言模型条件下的实验结果。随着目标领域无标注语料规模的增长,Unlabel_Part的F1值也呈现增长趋势。当语料规模到达一定程度时,更多的语料带来的收益就非常小了,甚至会引入较多噪声。
图3 无标注语料数量对实验的影响
4.5.3 样例分析
我们以Weibo-Recut的测试集为样本,对比了我们的方法(Mix)和基线方法的标注结果,其中一个样例如表7所示。
表7 标注实例对比
“高富帅”在上下文中虽然指代人,并且字面上有很强的人名特征(以“高”开头、3个字),但是并不是一个人名。新闻领域语料中出现更多的是标准人名,很少有类似的形似人名的网络用语。因此,基于新闻语料训练的基线方法识别错误,而我们的方法给出了正确的结果。原因是,在本文方法中,人名词典内没有“高富帅”,则生成的社交领域弱标注语料中,“高富帅”的标签为“U”,局部标注学习通过社交领域特有的上下文,判断出这三个字不是人名。可见,本文方法受益于目标领域的文本,减少了源领域模型的一些认知偏见。
本文提出了一种简单而有效的跨领域命名实体识别方法。通过自动构建目标领域弱标注数据,有效避免了领域间数据分布不同的问题。本文首次将局部标注学习应用到命名实体识别的领域迁移任务上。在领域自适应实验中,本文方法的性能都超过了基线方法。在加入强大的语言模型的条件下,本文方法仍然能提高目标领域的命名实体识别性能。
在未来的工作中,我们会探索在目标领域有少量监督数据的场景下,怎样更有效地利用这些标注数据来提高领域迁移性能。除此之外,预训练语言模型中蕴含的领域语义知识也非常值得我们去挖掘。