APP下载

面向电力低资源领域的无监督命名实体识别方法

2022-08-02王惠剑杨冠群

中文信息学报 2022年6期
关键词:子类语料命名

刘 荫,张 凯,王惠剑,杨冠群

(国网山东电力集团公司,山东 济南 250001)

0 引言

电力领域不仅和人类生活息息相关,更对保障国家安全和国家经济至关重要。为了提高电力领域工作效率和电力信息化程度,如何自动解析大量半结构化或非结构化电力文档是一件非常重要的工作,而命名实体识别(NER)是其中一项基础任务。由于电力领域属于传统行业,其数据基础相对匮乏: 一方面,目前还没有一个较全面的电力实体词表[1];另一方面,在实际应用中,高质量的标注数据十分匮乏,即便公司投入大量资源标注了一些行业数据集,往往也因为企业资产保护和数据合规等原因无法对外开放。因此,有效解决低资源条件下命名实体识别具有重要的现实意义,也极具挑战性。

命名实体通常是一个词或短语,可以在具有相似属性的一组事物中清楚地标识出某一个事物。通用领域命名实体一般为人名、地名、组织机构名等,并且存在大量标注数据,研究者已经在监督和无监督方法上做了大量研究和调研工作[2-6]。在电力领域,虽然有一些命名实体识别的研究工作,但并未公开标注数据[7-9]。同时,命名实体识别本质上是对输入符号(Token)序列的分类任务,传统的低资源文本增强方法,如词语替换、随机噪声注入、预训练语言模型等,可能产生较多噪声数据,不适合用于具有全局结构化预测特性的命名实体识别模型。此外,虽然在同等少量标注样本下,半监督学习通常比监督学习有更好的性能,但少量的标注数据和海量的未标注数据间往往存在跨资源特征表示、数据不均衡和训练模型间的差异等问题,导致泛化效果较差[9]。因此本文把电力领域作为一种低资源领域,研究从零基础开始,只利用可收集到的无标注文档资源进行无监督命名实体识别,这是实际应用中最亟待探索的技术[10]。例如,对于文本“电力网——是由变压器、电力线路等变换、输送、分配电能设备所组成的部分。”,自动从中识别出命名实体和类型(“电力网”“变压器”等)。

首先,如何判别电力领域的实体词,例如,“氨基酸”是生物实体词,但不是电力实体词,因此需要建立一个实体词标准。我们通过收集和解析电力领域半结构化数据获得一个小型实体词表,并获得其类型的层次结构,同时利用电力语料预训练的词向量模型得到每个类型的表示和代表实体词。例如,设备类、部件类、故障类等实体类型,设备类包括“主变压器”等代表词。这一步相当于为实体词识别建立了一个标准。

由于该实体词表规模较小,很多实体词并没有被覆盖,并且文本中也会不断出现一些新的实体词,如何识别并判断出新的实体词及其类型是难点,本文参考了无监督命名实体识别方法[5],利用全词预训练模型获得词语预测,并与代表实体词进行相似度计算,识别出实体词和实体类型。该工作在英文通用领域上进行,实体类型采用聚类和人工标注的方式,本文进一步改进,通过解析结构化数据获取领域实体词表,避免了人工打标签的工作,并针对中文特点采用了BERT全词预训练模型,实现中文特定领域的无监督命名实体识别。

综上所述,本文提出了一种在低资源数据条件下,利用电力领域的结构化和非结构化文档,其中包括技术文档、科技文献以及知识百科等,基于BERT全词遮盖预训练方法,无监督地进行命名实体识别,该方法在构建领域知识图谱中也具有很好的复用性。本文的主要贡献包括:

(1) 针对低资源中文电力领域,提出了一套从零基础开始,充分利用无标注文档资源进行命名实体识别的方案。

(2) 利用领域语料、中文BERT全词遮盖预训练模型和实体词语义相似度,解决无监督命名实体识别的关键问题。

(3) 建立了面向电力故障检测领域的分词词典和实体词表并公开发布,供研究界使用。

1 相关工作

1996年第六届信息理解会议(Message Understanding Conference,MUC)上,Grishman和Sundheim最早提出了命名实体识别任务。早期NER系统主要基于人工规则、词典、特征集和知识库,并采用特征工程和机器学习方法[6,10-11]。随着2011年Collobert提出基于神经网络方法的命名实体识别系统,该任务开始从特征工程方法中解脱出来[2,4]。基于深度学习的命名实体识别框架一般包括分布式表示(词向量、字向量等)、上下文编码器(CNN、RNN、Transformer、预训练语言模型等)和标签解码器(Softmax、CRF、RNN等)[10,12]。但目前表现较好的模型都是基于有监督的统计学习或者深度学习方法,半监督和无监督命名实体识别还处于发展阶段。

半监督命名实体识别方法的基本思路为扩大样本集、迁移领域知识、提高模型特征质量以及外部结构化知识链接[13]。前三种都需要少量目标标注数据,知识链接则需要使用外部知识库补充标注实体。典型的无监督命名实体识别一般采用聚类方法,从基于上下文相似度的聚类中抽取命名实体[12],核心思想是认为大规模语料的词汇资源、模式和其他统计信息可以用来推导出命名实体。Lin 和Pantel[14]介绍了怎样采用非监督技术创建大规模的语义相关词汇类簇。Nadeau等[6]提出了一个非监督的名词典构建和NER系统,通过设定人名、地名、组织三类实体种子和规则抽取网页中的实体清单,然后采用简单有效的启发式方法把实体抽取和消歧结合起来。Zhang 和Elhadad[3]提出了一种面向生物医学领域的无监督命名实体抽取方法,通过为实体类别设置代表词,对语料提取候选词(如名词、名词短语等),并计算与代表词的语义相似度,完成命名实体识别,并在两个主流数据集上得到53.8%和69.5%的较好效果。也有研究采用数据增强的方法,让增强数据尽可能地在实际应用中出现,文本增强需要保证已有符号和上下文不被破坏,一般可采用截断、拼接、符号替换等方法,尽量增强文本在实际数据中出现的可能性。针对半监督方法的困难,国内外学者提出了加入对抗特性的方法[15-16],也取得了显著进展。

在低资源命名实体识别中,基于规则的方法仍然被广泛应用。由领域专家构造规则模板,然后通过模式匹配进行实体识别,方法简单,且当文本中的实体具有较为固定的模式时,能取得较高的准确率[17-18]。不过该方法存在明显的弱点,在实际应用中存在诸多困难,如规则往往需要由领域专家通过阅读一定量的目标领域文本总结而得,依赖知识库和词典,这些都需要付出很大的代价和较长的建设周期。此外,不同系统需要专家重写规则,可移植性差。

总的来说,数据增强和标注数据依旧是非常专业的工作,而在实际应用中,企业往往不具备相关数据、经费和人力资源,低资源条件下命名实体识别就愈发困难。BERT可以从海量数据中学习语法和语义知识,在预训练阶段,BRET最后一层跟遮盖语言模型(Masked Language Model, MLM)最相关,因此中间层容易迁移,而精调(Finetune)模型较低层权重能够恢复到初始值,对模型性能的损害不会特别显著[19-21]。因此本文参考了基于BERT预训练模型的命名实体识别方法(1)http://github.com/ajitrajasekharan/unsupervised_NER,利用预训练对词语进行语义聚类,并手工标记实体类别获得代表词,通过计算文本中词语和代表词之间的相似度来判断词语是否为命名实体。由于在特定领域中自动确定实体类型的效果差,本文方法则进一步改进,通过结构化领域数据获取小规模实体词及其类型作为指导信息,避免人工标签,从而使我们的工作在特定领域上的实现更加准确和实用。

2 本文方法

2.1 任务描述

对于本文中电力领域的命名实体识别任务,形式化定义如下: 对于输入语句S,进行分词后得到词语序列,从中获得命名实体集合E,每个命名实体用三元组表示,分别为实体词起始位置序号、结束位置序号和实体类型,图1给出了具体示例。

图1 命名实体识别示例

针对电力领域的分词,我们通过对电力语料的串频统计扩大分词词典,使得实体词尽可能涵盖在单个词语中。对分词后的每个词语wi,判断其是否为实体词及其类型。此时会存在两种情况: 一是如果wi在已有实体名单中,可通过实体检索完成实体识别任务;二是如果wi不在实体名单中,则利用预训练模型进行无监督命名实体的识别。

2.2 模型架构

为了从零开始进行电力领域命名实体的识别,首先需要学习电力领域的词语语义表示,为此收集了大量电力行业文本数据,如电力百科、电力科技论文、电力规程等,基于该语料对电力领域的相关词语进行频度统计,并利用全词预训练模型学习电力领域的词语表示。同时,本文进一步利用半结构化电力数据获取命名实体词表及其类型,通过解析半结构化电力设备检修手册,将实体词及其上下位的结构层次进行提取,并依照前人方法[5],对每种实体词获得向量表示,得到每种类型的代表词,从而获取一个小规模的实体词表。对于给定文本,我们利用全词预训练模型判断文本中的词语,并计算它们和实体类代表词的相似度,以预测其是否为实体词及其类型。因此如图2所示,本文方法包括三个模块: ①电力领域全词预训练表示学习; ②基于半结构化数据的实体类别代表词表示学习; ③基于预训练的命名实体识别和类别确定。2.3电力领域预训练表示学习由于缺少电力领域语料,我们收集了相关电力百科词条、电力科技论文、电力规程等数据,形成电力行业基础语料。为了更好地进行电力领域表示学习,需要提高电力文本分词的准确性,我们对电力基础语料利用串频统计提取出现频度大的子串,并对通用词典中的相应词项更新频度,同时将下文中获取的实体词也一起加入到分词词典中作为电力领域词典, 以更好地对电力语 料进行分词处理。具体步骤如下: (1) 使用停用词表过滤语料;(2) 设定领域词典最大词语长度L,对长度小于或等于L的字串进行串频统计;(3) 对串频统计频度大于一定阈值的子串,如果存在于通用词典中,则更新其词频为原有词频和串频统计词频之和,新词串及其频度则直接添加到领域词典中。需要说明的是,通过解析结构化文档获得的实体词也被加入到电力领域词典中。这些实体词是确定性的领域词,将它们的频度设为一个最大值,并设词性为名词。在领域语料分词之后,我们利用Word2Vec学习词向量表示。同时,利用全词遮盖(Whole Word Masking,WWM)预训练学习词语的上下文表示,全词遮盖可以看作是升级版的BERT,主要更改了预训练阶段的训练样本生成策略,如果一个完整词的部分子词被遮盖,则同属该词的其他部分也会被遮盖,这样不同于原先基于子词(WordPiece)的预训练中分开的子词会随机被遮盖。具体而言,参考前人工作,本文对组成同一个词的全部组成进行遮盖。根据上文构建的电力领域词典,对词典中出现的词语进行全词遮盖处理,然后采用全词预训练模型进行二次预训练[19],以使模型学习到电力领域内的先验知识,得到电力领域全词预训练模型。这里我们主要采用预训练任务[20]: 领域全词遮盖和下句预测(NSP)。在训练中,为了节省资源,采用了两阶段预训练方式,第一阶段预训练最大句子长度为128,第二阶段预训练最大句子长度为512。由于我们的任务是无监督命名实体识别,所以没有进行任务级别(如分类)的预训练任务。

图2 本文方法总体架构图

2.4电力实体类型及代表词学习为了指导命名实体识别和实体类型确定,我们希望获取一个准确的具有类型信息的电力实体词表。我们发现很难获得大规模实体词表,但可以获取到小规模的相对结构化的专业数据——电力检修手册。如表1所示,通过解析该数据可以得到其中的电力实体词和相应的实体类型,如设备、部件、故障等。这样获取的实体词更加准确,但受限于数据规模,实体词表的规模也相对较小。此处构建实体词表的主要动机是给出一些电力实体词及类型的示例,指导系统发现更多新的实体词,并确定其类型。

表1 检修手册结构化部分内容示例

针对电力检修手册,首先确定实体类型,并将类型进一步细分为实体子类,对各子类分别根据所有包含的相关词汇提取若干代表词,作为下一步实体识别中语义计算的参考词。最终,我们获得五大实体类型,包括: 电力设备、设备部件、故障现象、故障原因、维修措施。对于每种实体类型很难给出直接的定义和语义表示,我们认为可以通过类型中的代表词来反映其语义内容。为了准确地选出各个类型的代表词,我们对每种类型又进一步细化为子类,由于各实体类都与电力设备有关,如故障原因是针对某个设备发生故障的原因,设备部件是某个设备上的部件,因此我们用设备名将其进一步细分到实体子类,再对每个实体子类选择代表词,帮助识别新的实体词,如图3所示。

图3 实体类型层级示例

选择代表词时,本文基于在电力领域语料上进行训练的Word2Vec词向量表示,而没有采用基于BERT的向量表示,这是因为BERT向量反映了词汇的上下文信息,而此处更注重实体词本身的语义表示。具体计算时,假设实体子类的词汇数量为n,对于每个词汇,我们计算其与其他词汇的平均语义相似度[5],根据平均语义相似度的大小,选取前k个实体词作为代表词集合v(图4),如式(1)所示。

图4 平均语义相似度计算示例

(1)

2.5 命名实体识别及实体类型确定

通常文本中的实体词为名词或代词,因此可以先根据分词标记出文本中可能的实体词汇,然后再进一步确认是否为电力实体词,以及所归属的实体类型。

对文本中识别出来的名词和代词进行遮盖,并利用全词遮盖预训练模型预测可能的输出词。我们选用Word2Vec表示输出词词向量,而不用基于BERT的上下文相关嵌入表示,这是因为BERT词向量包含了较多的上下文信息。

假设对于文本中的遮盖词语w,利用全词预训练模型预测词汇,设定阈值λ,把预测概率pi≥λ1的词汇si取出,分别计算si与各实体类别c中所有代表词tj的平均语义相似度。我们再把取出的预测词汇si和实体类别c的语义相似度进行加权平均,则可以得到遮盖词语w与实体类别c的语义相似度为simc(w),如式(2)所示。

(2)

(3)

这里计算Lcdc时考虑采用类别内元素数量的对数,是为了降低元素数量的影响权重,“+1”则保证当元素数为1时,Lcdc=1。根据式(4)计算实体归属类型分值Scorec,设定阈值λ,如存在某个实体类别,使得Scorec(w)大于λ,则认为词语w为相应的实体类别,否则认为该词不是实体词。图5示意了如何对文本内的词语进行实体词判断和归类的过程。

图5 实体识别及归类示意图

(4)

3 实验结果与分析

3.1 数据介绍

我们采用的电力领域语料主要有两个来源:

(1) 电力科技论文、电力规程等电力领域数据,主要来自于“AIIA”杯电力专业领域词汇挖掘大赛的数据(2)https://www.datafountain.cn/competitions/320,语料共95万行,约2 000万词。

(2) 将结构化数据中解析的电力设备和部件实体词作为查询词,取得相关百度百科词条文本,共有词条10 271个,共约885万词(图6)。我们对结构化数据电力检修手册进行了解析,共得到1 400个实体词,5个实体类型,实体词数量分别为“电力设备”257个、“设备部件”459个、“故障现象”62个、“故障原因”208个、“维修措施”414个。

图6 百度百科搜索(top)和词条主页(bottom)

对电力数据分词时采用了通用分词词典,包含词性、频度等信息。同时进行了电力语料的串频统计,我们设定最大串长度为12个字,得到词串约36万,并根据串频统计对分词词典的频度进行更新,词典部分内容如表2所示。

表2 分词词典内容示例

3.2 实体类别代表词学习

我们对5个实体类别分别按照对应设备名称进一步细分,共得到1 487个子类。对每个实体子类内的所有词汇,按照式(1)分别计算其与类内其他词汇的平均语义相似度,取分值Top10的词汇为子类实体代表词,如表3所示。

“电测仪表”子类一共包含11个子类实体词,它们都是与“电测仪表”相关的部件名称。子类中语义分最高的代表词为“交流电压表”,它与子类中其余10个词的语义相似度平均值约为0.384[参见式(1)],高于其他词。直观可见“交流电压表”和“交流电流表”之间的语义相似度分值较高,从而使两个实体词总分排名靠前。而“同期表”和“电压检测仪”与其他词语义相似度较低,从而排名靠后。此外,“直流电压表”和“直流电流表”词汇相近,所以二者排名也相近。在其余子类中也可以发现类似的直观信息。

江西省域国土面积16.69万km2,其中96%属于鄱阳湖流域。常驻人口4 622万人,企业法人单位34.41万家。湖口站(出境)多年平均径流量1 507亿m3;最大2 646亿m3(1998年);最小566.4亿m3(1963年)。域外多年平均入境水量50亿m3左右。

我们注意到语义相似度分值普遍较小,主要出于以下三方面原因: ①参见式(1),该分值为该词与子类内部所有词的语义相似度平均值[如“高压柜”子类中的“中性点间隙”,其与类内其他词的语义相似度总分为1.866=0.092 4×(203-1)]; ②我们训练的基础电力语料内容有限,各实体词对应的语义相似词汇较少; ③电力检修维修手册中提取的实体词很少,造成每个子类中的实体词数量很少,如表3中仅为10~20个。如果词汇过多,平均分值也会大大降低。

表3 实体子类属性示例

需要说明的是,具体应用中也可以设定代表词阈值(如0.05),过滤掉语义分值过低的代表词,这样更加合理。可以看出,基于词向量和语义相似度选取的代表词能较好地反映子类的语义、公式的合理性,以及代表词的合理性。

3.3 命名实体识别评测

对于给定文本分词后的词语,如果在我们的命名实体表中查询到,则直接将其判定为实体词,并确定其类型。我们主要针对词语没有出现在实体表中的情况,评测我们提出的命名实体识别方法的有效性。由于没有可供比较的标准电力数据集和测试样本,我们从实体词表中随机抽取约5%共298个,并从表中去除这些实体词。同时对电力文本分词,选取包括这298个实体词并且多于10个汉字的句子,共约14万句作为测试语料,利用第2节中介绍的无指导实体识别方法发现实体和判定类型。

首先遮盖预测文本句中的屏蔽词,加载BERT-WWM-Finetune全词预训练模型,设定模型预测分值阈值λ1=0.05,预测屏蔽词,并记录模型预测分值;然后调用文本语义相似度模型计算预测词与子类实体代表词的语义相似度,计算预测词归属类簇分值,超过阈值λ2=0.05的标记实体类别,并统计最终实验结果。

表4展示了模型识别的部分结果示例,首先把“开路”进行遮盖,我们的模型将其预测为实体词“短路”,预测评分为0.947 01,同时对“短路”与所有实体子类中的代表词进行语义相似度计算,根据式(4)得到所属的类型为“故障原因”。对于“变压器”和“短路”,本文模型分别预测出了“电抗器”和“过载”,并通过两个子类语义代表词的相似度计算,分别给出了正确的实体类型“电力设备”和“故障原因”。对于“电源”,模型则准确预测到了该词及其实体类型,这是最理想的情况,但这种情况占比较少,一般仅占10%,但会随着基础训练语料的扩大而提升。可以看出,实体虽然预测的并不会完全准确,但基本识别出了实体,并且能够给出正确的实体类型,也可以看作完成了命名实体识别任务。

表4 命名实体发现结果样例

为了更充分地比较,本文采用了3个预训练模型进行实验,分别是: ①哈工大讯飞联合实验室通用中文模型“BERT-WWM”; ②使用电力文本语料直接训练的模型“BERT-WWM-Power”; ③使用电力文本语料精调后的全词BERT预训练模型“BERT-WWM-Finetune”。

为了体现方法性能,本文给出命名实体发现的执行过程实例,并列出代表性词汇在三种模型下的预测结果。首先统计词汇在语料中出现的频度,为了提高有效性,过滤长度小于200个字符的句子。共得到584个有效词汇,表5示例了一些待预测词汇在语料中包含该词汇的句子数量,以及该词汇在语料中总共出现的次数。

表5 预测词汇语料频次统计

我们取语料句子中包含频次最高的三个词汇“变压器”“电机”“电源”作为样例,分别统计该词在三种模型下的预测结果,如表6所示。

表6 三种模型词汇预测结果统计

表6可以看出,“变压器”总计预测正确663次,“BERT-WWM-Finetune”模型预测正确445次,占比67%,几乎都是直接正确预测出屏蔽词;“电机”总计预测正确1 804次,“BERT-WWM-Finetune”模型预测正确923次,占比51%,且“电源”也有类似的结果。总计预测正确2 967次,正确预测屏蔽词2 615次,三种模型分别占比13%、30%和57%。三个词汇总预测平均分为0.271,三种模型的平均分分别为0.309、0.215和0.343。由此可见,“BERT-WWM-Finetune”模型在预测准确率、预测类型和预测分值上均好于其他两个模型。

进一步,我们统计了全部词汇在各模型不同的BERT预测分值阈值λ1下,命名实体识别和实体发现在三种情况下的正确率: 准确预测到屏蔽词;正确预测与屏蔽词相同类别的实体词;预测为非已有实体词,计算该词与实体聚类簇代表词的语义相似度,分值超过阈值λ2,则归属到类簇对应的类别,如果该类别与屏蔽词类别相同,则标记为新实体发现正确。

我们设λ1=0.3,λ2=0.05,对三种BERT模型进行了实验,表7给出了三种情形分别的和总计的正确数和正确率。“BERT-WWM”模型超过λ1的有效预测数为66 079,总计实体类型预测正确率为21.37%,其中1 519个直接预测出屏蔽词,占比2.3%,预测到同类别实体数占比2.95%,正确通过与子类实体代表词的语义相似度方法识别出的实体类别占比16.12%。“BERT-WWM-Power”模型超过λ1的有效预测数明显减少为10 917,但总体准确率提升为32.09%,尤其是准确预测出屏蔽词占比10.25%。“BERT-WWM-Finetune”模型相对效果较好,预测数为47 212,总体准确率最高为33.93%,得到了较好的召回数和正确率。

表7 三种BERT全词遮盖预训练模型正确率统计

由于本文可用的电力语料只有约100万行,约3 000万词,相对深度学习模型的数据需求规模较小,因此总体正确识别率不高。但仍然可以看到基于电力语料训练的模型正确率提升明显,基于电力语料精调的全词预训练模型表现最好。此外,各模型直接预测出屏蔽词的比率大约占1/3,预测词和屏蔽词为同一实体类型的较少,大部分正确的实体类型都是通过计算与子类实体代表词的语义相似度方法识别出。

不同BERT预测分值阈值λ1下各模型的预测正确率统计如图7所示。可以看出,三个模型的性能走势基本一致,全词预训练精调模型和使用电力文本语料直接训练的BERT-WWM-Power模型准确率更高。另外我们也统计了召回率,发现哈工大模型和预训练精调模型要好于BERT-WWM-Power模型,主要原因是深度学习模型的电力训练语料过少,无法覆盖大量的遮盖词模式。

图7 BERT各预训练模型在不同阈值下NER正确率分析

4 结束语

本文针对电力领域数据标注资源少的问题,提出了一种基于全词遮盖预训练模型的无监督命名实体识别方法。该方法利用基础通用词典,对领域语料进行串频统计,生成领域词典,然后从收集的领域基础语料自动解析和判别实体类、子类和子类实体代表词,并精调领域BERT预训练模型。对给定文本,通过遮盖文本中的名词进行遮盖词预测,然后计算预测词与实体子类代表词的语义相似度,进而发现新实体并判断实体类型。通过实验数据可以看到我们的方法在低资源数据场景下具有一定的有效性。由于领域基础语料较少,而深度学习模型性能与数据量强相关,无监督方法的总体性能还不是很理想,只适用于较粗放的命名实体识别场景。但考虑到大部分实际应用场景中数据标注工作不可行,本文提出的方法仍具有很好的实用价值。

后续工作中,我们计划进一步扩展基础语料,收集领域论文、技术文档等资料,爬取电力领域网站、其他百科网站的电力词条数据,分组遮盖实体词训练模型。此外,我们考虑深入研究领域命名实体识别的半监督方法,标记一定量语料作为种子数据,分析在特定领域种子数据对模型性能的提升情况,进而研究在有限资源投入下,如何标注数据才能获得较高的性价比。

猜你喜欢

子类语料命名
基于归一化点向互信息的低资源平行语料过滤方法*
命名——助力有机化学的学习
Java面向对象编程的三大特性
汉语儿童早期子类名词获得研究
濒危语言与汉语平行语料库动态构建技术研究
有一种男人以“暖”命名
为一条河命名——在白河源
Java类的继承
国内外语用学实证研究比较:语料类型与收集方法
Java 多态性浅析