刘凡平 陈 慧 沈振雷 吴业俭
(上海二三四五网络科技有限公司 上海 201203)
新词是指随着时代和网络新媒体的发展,在某一时间段内或者某一时间点以来[1]首次通过各种途径产生的、具有新形势、新意义和新用法[2-3]的词语,他们从未被任何词典收录,属于未登录词,比如“随申码”“奥利给”和“佛系”等。根据中国语言文字工作委员会统计,自改革开放以来,中国平均每年产生800多个新词语[4-5]。新词的出现给输入法的词库收录和中文分词等工作带来了巨大的挑战。输入法词库的覆盖率是输入法强弱的关键指标之一[6],因此对最新出现的新词,更快、更精准地收录对输入法来说至关重要。此外,对于中文分词来说,新词的出现使得自动分词准确率严重下降,研究显示,60%的分词错误是由新词导致的[7]。因此对于新词的有效识别,对自然语言领域的研究具有重要的意义[8]。
目前新词发现的方法主要分为三类:(1) 基于规则的新词发现方法。例如通过词语出现的规律建立规则,判断是否为新词,郑家恒等[9]在2002年使用构词法识别网络新词,取得了较高的准确率;姜如霞等[10]在2019年使用基于规则和N-Gram算法生成新词候选词,并用左右熵的方式进行扩展和过滤来识别新词。(2) 基于统计的新词发现方法,例如通过条件随机场(CRF)、信息熵等统计分析算法挖掘潜在的新词。陈飞等[11]使用CRF对文本输入序列进行标注,将新词发现问题转化为预测已分词词语边界是否为新词边界的问题,取得了较好的效果。(3) 基于规则和统计结合的新词发现方法,通过规则和统计方法的相互弥补,提升新词发现的效果。周霜霜等[12]提出了一种融合人工启发式规则、C/NC-value改进算法和条件随机场(CRF)模型的微博新词抽取方法,有效提高了微博新词的F1值。显然,以上方法都存在明显缺陷。基于规则的方式,虽然针对特定领域可以达到很高的准确率,但在新词发现的可扩展性、灵活性上存在很大弊端,甚至需要大量的人工参与总结规则,领域适应能力弱;基于统计的方式通过获得的语料,分析词频、左右邻接熵等统计特征判定新词成词的概率,虽然具有较强的领域适应能力和可移植性,但是面临需要大规模语料库和数据稀疏[13]等问题。
另外,受当前新词发现研究方法可移植性差、需要大量人工规则或语料的限制,目前新词发现的研究主要集中在解决某特定问题的新词识别任务(人名、地名、翻译缩写等命名体的识别)以及某几个特定领域术语(如军事、财经等领域)的自动提取[11]。例如,韩春燕等[14]使用条件随机场对微博语料进行命名体的识别,由于缺乏大量语料,采用半监督学习框架训练模型提高了微博语料中命名体识别的效果;段宇锋等[17]在2015年对植物专业领域的新词自动化识别进行了探索等。然而有很多新词,比如“逗鹅冤”“奥利给”“蓝瘦香菇”等词语,不属于任何明确的特定领域且只在特定语境和情境下有效。对于这类属于开放领域的词语,目前大部分的新词发现方法显然不太适用。然而不仅仅局限于某个或某几个领域的、面对开放领域的新词发现算法和当前有领域限制的新词发现算法相比还比较缺乏。
综上所述,目前新词识别算法仍然面临不同领域可移植性能弱、需要大量人工参与和建设大规模语料库、开放性领域新词识别算法匮乏等问题。针对这些问题,本文在BERT预训练模型的基础上进行微调,将词语和上下文输入模型进行训练,使得模型具有识别该词语在上下文中是否成词的能力。BERT预训练模型的训练语料由维基百科等大规模语料构成,因此对于开放性领域的文本,预训练模型也拥有很好的表示能力,这使得该模型对于不同领域的新词具有很好的识别能力,解决了传统新词识别方法需要大规模语料和不同领域移植能力弱的缺点;同时,训练获得的分类器自动判定字符串是否成词,解决了规则法需要人工制定大量规则的缺陷。
BERT模型是Google公司AI团队[16]在2018年发布的一款新型语言模型。该模型性能卓越,在包括阅读理解任务在内的11种不同的NLP任务中创造出最佳成绩,其中在机器阅读理解顶级水平测试中的表现全面超越人类,为NLP带来了里程碑式的改变。如图1所示,相比于其他语言模型如ELMO、GPT等使用浅层双向或单向的网络结构,BERT模型采用表义能力更强的深度双向Transformer网络结构来预训练语言模型。深度双向的编码器更有利于融合字左右两侧的上下文,对于句意的理解更强。
图1 BERT预训练模型结构图
BERT模型的主要创新点在于语言模型的预训练方式上,它使用了Masked LM和Next Sentence Prediction两个任务来训练模型,以分别捕捉词语和句子级别的表征。在Masked LM任务中,训练方式为按照一定百分比随机屏蔽句子中的token,然后预测被屏蔽的token来使得模型具有很好的词语级别的表征和理解能力;而在Next Sentence Prediction任务中,将两个句子A和B分别输入模型,通过有监督的方式来训练模型,让模型判断B句是否是A句的下一个句子,即A句和B句的关系,这让模型具有了理解句子之间关系的能力。在本文新词识别的任务中,模仿BERT预训练模型Next Sentence Prediction任务的训练方式,将词语和词语所在的上下文分别输入模型,让模型学习到该词语与其上下文之间的关系。通过有监督的学习让模型充分理解到该字串在下一句中是否成词,从而来帮助实现新词发现任务。
本文在BERT预训练模型的基础上进行了fine-tune,将正例及上下文和负例及上下文输入模型进行训练,使得模型具有识别该词语在上下文中是否成词的能力。实验中,样本分为两部分:正例和负例。正例是一个正常词语及其上下文组成的文本的特征向量,例如“秘书室[SEP]音乐会由东吴秘书室主办”;负例为一个非正常词语及其上下文的特征向量,例如“以发挥[SEP]以发挥乐曲的细微变化”。然后对正例标记为[0,1],负例标记为[1,0]。
对于中文语料,BERT模型使用单个字符作为输入的原子字符。本文加载谷歌2018年公开的BERT预训练模型作为字向量表,该模型采用了12层的双向Transformer,隐藏层神经元节点数为768即隐向量大小为768维,每层的muliti-head为12。通过查询该字向量表将输入文本中的每个字转化为768维向量作为模型的输入,完成将高维语义空间的自然语言转化成低维空间的embedding。同时,将BERT预训练模型的参数作为模型的初始化参数,经过模型学习得到输入文本融合上下文语义信息后的表征。此外,模型输入除了字向量(token embeddings)外还包括位置向量(position embeddings)和区分上下句的分段向量(segment embeddings)。在BERT预测下一句的任务中,句子对中的两个句子拥有不同的segment embedding,将它们进行简单的相加后一起后送入到模型中。如图2所示,本文模仿这种做法将词语及其上下文分配不同的segment embedding,拼接后送入模型进行训练。
图2 句表征结构图
本文将新词识别任务转化成NLP的常见任务:分类任务。首先,对数据进行预处理,构造正负样本输入模型进行训练,获得可以识别该字串在其上下文中是否是词语的二分类器;然后,将测试文本输入模型进行预测,并将模型预测为正的词语保存为词语的初始版本;最后,对模型预测为正的词语进行标准词库和篇频过滤,得到新词。其中鉴定词语的过程采用有监督的学习方式,模仿BERT预训练模型Next Sentence Prediction的训练方式,将预测字串在上下文中是否成词转化为二分类问题来解决。本实验加载Google在2018年公开的中文预训练模型(BERT-base,Chinese)进行微调训练分类器,采用交叉熵式(1)作为损失函数。通过反向传播算法调节模型参数,最终使得模型具备词语判别的能力。
(1)
式中:y为真实值;y′为模型的估计值;N为样本数。
如图3所示,本文将字串和对应的上下文编码输入BERT模型。
图3 模型的训练
图3中,w1,w2,…,wn表示需要被判别是否成词的token字串,s1,s2,…,sn表示该字串所在的上下文句子,[SEP]表示分割字串和上下文句子的分隔符。经过BERT的编码之后,采用第一个token(即[CLS])的最后一个隐藏状态的输出作为整个句子的表示。拿到句子的输出后做一个简单的线性变换,最后通过一个Softmax层,经过式(2)的变换,将线性层的隐向量转化成0到1之间的表示,即该字串在上下文中是否是一个真实的词语的概率,j为1到k的自然数。
(2)
本文的实验由主实验和对比实验构成。主实验方法为本文提出的基于BERT的新词识别方法,对比实验为基于互信息和左右熵的新词发现算法和基于条件随机场的新词发现方法。基于互信息和左右熵的新词发现算法主要将分过词的文字使用N-Gram算法将文字分割为一个个字符片段,即候选词。然后,根据成词规律计算候选词的凝固程度(互信息)和自由程度(左右熵)来判断该候选词是否是一个词语。基于条件随机场的方法则利用条件随机场(Condition Random Field,CRF)可对输入进行标注的特点,首先对输入的句子进行分词,将新词发现转化为序列标注问题,再将分好词的句子进行新词的抽取。
由于缺乏公开权威的分词和新词发现数据集,本文采用《人民日报》提供的人工标注的分词和词性标注语料,总计52 454条。将语料按照9∶1划分为训练集和验证集用于模型的训练和验证。为了验证三个模型在不同领域的文本上的泛化性能,即模型的可迁移能力,本文的测试集持续搜集每日由包括百度、新浪微博、知乎、搜狐新闻和Bilibili在内的多个网站热搜榜文章,并对当日搜集到的语料进行一次新词识别和搜集。该行为是持续行为,并非一次性行为。这些文章来源于娱乐、财经、社会和文化等不同领域,拥有不同的文本风格。另外,测试集采用最新热搜榜的语料,拥有较高的时效性,对于模型是否真的可以发现优质的新词可以更好判别。
本文采用的算法指标有精准率P(precision)、召回率R(recall)和F1值(F1-measure)。由于没有权威公开的数据集,且中文分词方法也并不唯一,例如,“云南省科协”可以看作是一个词,也可以分为“云南省”和“科协”两个词。不同的算法给出的分词方案虽然可能不统一,但是可能都是正确的。因此将三个算法识别出的正确结果的合集看作是要召回的结果,如图4所示。
图4 模型评价方法图
图4中A、B和C分别表示三个算法识别为新词的集合,其中A′、B′和C′则表示各自对应的正确结果,f(X)表示集合X的元素个数。那么以A算法为例,其精准率、召回率和F1值的计算公式为:
(3)
(4)
(5)
3.2.1 主实验训练数据集的构造
本文的数据使用《人民日报》提供的中文分词语料库进行构造。正样本由分词数据库内长度大于等于两个中文字符的词语及其上下文组成,格式如:“秘书室[SEP]音乐会由东吴秘书室主办”,负样本的词语由不定个数的不成词的字串组成,负样本则由负样本词语及其上下文组成,格式如:“以发挥[SEP]以发挥乐曲的细微变化”。其中“[SEP]”为BERT字典中的分隔符,将词语和上下文分割开来。词语的最大长度为8个字符。构造的训练集和验证集的样本数如表1所示。其中训练集的正负样本比约为1∶20,验证集的正负样本比约为1∶38。
表1 正负样本数目表
3.2.2 主实验流程
图5为本文的实验流程。首先对数据进行预处理并构造正负样本,将词语和上下文同时输入模型进行训练,得到在验证集上精度很高的词语分类器并保存。
图5 实验流程图
然后如表2所示,使用滑动窗口的模式对爬取的热搜榜语料进行子串分割等预处理,生成若干长度小于等于5的候选词,构造测试集。
表2 测试样例表
表3 词语成词概率表
(6)
3.2.3 主实验结果及分析
表4为分类模型在验证集上的精准率、召回率、F1值和准确率情况。由表可知,模型对于负样本的识别能力很强,各项指标都基本接近1。模型对于正样本的识别能力也非常好,精准率达到了0.93,召回率达到了0.88,效果符合预期。最后将测试集数据输入模型进行预测,经过标准旧词库过滤之后,模型发现新词1 184个。经校验,其中1 142个词语识别正确,模型精准率为0.962。
表4 验证集上各实验指标表
3.2.4 模型在开放领域真实最新语料中的表现
为了验证该模型在最新真实数据上的泛化能力,本文收集了各门户网站近7日的新闻和热搜榜数据文本数据,其中文本类型包括娱乐、财经和社会等领域。将该文本数据集模型输入模型。表5为每日文本数目、发现新词数目和人工校验准确率表。由表5可知,模型在近一周的新词发现均值为79个(包含未登录词),人工校验准确率为0.95,因此模型在不同领域上具有较强的泛化能力,克服了基于规则的新词发现算法的领域针对性强、难移植的缺憾。
表5 模型的泛化表现
其中输出的新词样例如表6所示,对于不同领域的文本,模型对新词的识别比较准确,确实发现了一系列最近比较火,且目前词库尚未收录的词语,如“三不三报”“封控”等具有明显疫情背景的词语以及最近在媒体中经常提及的人名如“乔治弗洛伊德”等,由此可见,该模型在实际生产生活中具有很强的现实意义。
表6 新词发现结果样例表
本文中的对比实验主要采用基于互信息和左右熵的新词发现方法和基于条件随机场的新词发现方法。在相同的数据集上,使用这两个方法来实现新词发现任务。最后通过计算各算法的精准率、召回率和F1值来比较各算法性能。
3.3.1 基于互信息和左右熵的新词发现
基于互信息和左右熵的新词发现方法主要是通过计算候选词的内部凝固度和边界自由度来确定该字串是否为一个词语[17-18]。内部凝固度用来衡量该词语搭配是否合理,词内部凝固度越大,表明汉字结合越紧密,它们构成词语的可能性越大。比如在一句话“蜘蛛坐在网上等猎物”中,“蜘蛛”“猎物”等的凝固度就很大,“蛛坐”“在网”等词的凝固度就很小,因此“蜘蛛”比“蛛坐”更有可能是一个词语。互信息通常用来表示两个信号之间的依赖程度,在这里用互信息来表示词语内部的凝固程度。互信息的定义为式(7)所示,其中p(x)表示x在语料里单独出现的概率,p(y)表示y在语料里单独出现的概率,p(x,y)表示x、y在语料里一起出现的概率。
(7)
边界自由度则用来衡量一个候选词左右相邻字的丰富程度,边界自由度越大,该候选词越有可能是一个词语。比如对于“杯子”和“辈子”这两个字串。“杯子”左右可以加的相邻字就比“辈子”要丰富得多,即“杯子”拥有更大的边界自由度。因此,“杯子”就比“辈子”更有可能是一个词语。使用候选词的左右信息熵来衡量边界自由度的大小。左信息熵指候选词与它左相邻集合的信息熵之和,左信息熵越大表明候选词的左邻接词越丰富,那么该候选词是一个词语左边界的可能性就越大,右信息熵同理。左右信息熵的公式如式(8)、式(9)所示。其中,式(8)中sl是候选词w的左邻接字的集合,p(wl|w)是候选词w出现的情况下其左邻接字是wl的条件概率。式(9)同理。
(8)
(9)
如图6所示,本实验中基于互信息的新词发现方法采用文献[18]中的方法,算法流程主要包括语料的预处理散串的分析、根据互信息对候选词进行过滤、根据候选词的左右熵确定词语边界等步骤。首先将语料进行分词后,将散串进行Bi-Gram的组合,计算字串组合的互信息,若互信息大于阈值则将该字串视为候选词,然后计算候选词的左右信息熵,根据计算结果进行过滤或扩展,最后得到新词。本文将测试数据按图6的步骤进行新词抽取,其中字符长度阈值为5,互信息阈值为5,交叉熵阈值为0.07,经过标准旧词库过滤后,共输出词语909个,正确的有629个,精准率为0.692,低于本文主实验的精确率。
图6 基于互信息和左右熵的算法
3.3.2 基于条件随机场的新词发现
基于条件随机场的新词发现算法是利用CRF对输入文本进行序列标注,从而达到分词的效果,Xue[19]最早在2003年时将序列标注方法应用于中文分词,并且对于未登录词取得了较好的召回率。本文借鉴文献[20]用于命名体识别的网络结构用于分词任务。将《人民日报》(2014)的人工标注语料进行分词标记后输入网络进行训练得到分词器。目前主流的分词标记方法有三种,如表7所示。本文采用4-Tag的标记方式。其中“S”表示单独的一个字,“B”表示词语的开头,“M”表示词语的中间,“E”表示词语的结尾,例如对于分好词的句子“昆明|的|气候|四季如春|”,那么对应的4-Tag标记为“BESBEBMME”。
表7 3种常用标记方法
模型结构如图7所示,首先将文本使用word2vec预训练模型对字进行嵌入,每个字的特征为300维;得到字嵌入之后,将字嵌入输入到双向LSTM中;输出层接CRF使模型能够同时考虑过去和未来的特征,并学习到状态转移矩阵使输出标签(tag)时的选择前后相互关联[21]。将测试文本输入模型,得到被分词的句子后的词语序列,提取长度大于1的词语,经过标准旧词库的过滤后,共输出词语1 742个,经过校验,正确的个数为1 300个,精准率为0.746,远低于本文的BERT模型的精准率。
整合三个算法在开放领域测试集上的结果,统计结果如表8所示。由表8可知,三个算法共找出的正确词语的个数为3 071个。由于基于CRF的新词识别方法是基于分词模式的,因此贡献了最多的词语数量,而基于互信息和左右熵的方法过滤依赖于词频的统计,因此贡献了最少的新词量。三个算法共同发现的词语共123个,人工校验准确率为100%,其中命名体为84个。
表8 实验结果统计
将三个算法的并集看作需要召回的结果,计算召回率和F1值,结果如图8所示。BERT算法的精准率远高于其他两个算法,同时拥有最高的F1值。这表明,对于开放领域的语料,本文提出的算法拥有更好的新词识别能力。
图8 各算法指标比较
命名体识别(Named Entity Recognition,NER)是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等,在本文中还包括电视剧名、电影名、热点事件名和游戏装备名等[22]。命名体的识别不仅是分词和新词识别的一个重要环节,同时也在句法分析、机器翻译、信息检索和自动问答等领域有直接的应用[23]。为了验证三个算法对于命名体的识别能力,本文还对新词集中各算法对命名体的召回情况做了统计,结果如图9所示。由图9可知,在CRF拥有最大新词贡献量的情况下,BERT对命名体的识别依然保持最高的召回率。
图9 命名实体识别的召回率比较
针对目前新词识别领域算法存在的移植性能弱、需要大量人工参与规则定制、需要大量语料以及数据稀疏等问题,本文提出了基于预训练语言模型(BERT)的开放性领域新词识别方法。该方法利用BERT模型对于句内上下文和句间联系的超强理解能力,将词语和上下文输入模型,将新词识别任务转化为分类任务来完成新词的识别。经实验证明,与基于互信息和左右熵的新词发现方法和基于CFR的新词发现方法相比,本文提出的基于BERT的新词识别方法在开放性领域的数据集上拥有更高的精准率和F1值。与此同时,BERT对于命名体的识别也拥有最高的召回率,实验验证了本文算法的有效性。但是,由于用户在书写文档时存在输入法误操作、错别字等各种情况的发生,这类风险词并不属于新词,但目前算法只是通过篇频过滤的手段对其进行初步过滤,并没有做更精细的工作,日后对于这类风险词的标注应该成为工作的重点。