王佳楠,梁永全
(山东科技大学计算机科学与工程学院,山东青岛 266590)
随着自然语言处理的发展,分词作为基础任务成为研究重点,中文因其复杂性和特殊性成为分词热点话题。中国知网和Web of Science 的相关论文显示,自2010 年分词研究达到小高峰后,中文分词研究热度再次缓步增长,见图1、图2。但是,作为自然语言处理的基础任务,分词究竟有没有必要,Li 等[1]在2019 年ACL 会议上提出此观点,并在机器翻译、文本分类、句子匹配和语言建模4 个NLP任务上验证分词的非必要性,但这并不说明分词研究不再有意义。词级别模型欠佳表现在数据稀疏、过拟合、OOV以及数据迁移能力缺乏等,要解决此类问题,提高分词性能仍有重大意义,例如谷歌提出的知识图谱概念。知识图谱强大的语义关联能力为网络搜索提供便利。知识图谱本质是一种语义网络,用图的形式描述客观事物,由边和节点组成。边一般指关系和属性,节点指概念和实体。现实中,书本和网页中的内容属于非结构化或半结构化数据,无法直接构建知识图谱,分词成为构建知识图谱的第一步。英文通过空格区分单词,中文则需要根据上下文信息理解分词,但这对于计算机而言相当困难。
Fig.1 Statistics on the number of word segmentation documents of CNKI图1 中国知网分词文献数量统计
Fig.2 Statistics on the number of word segmentation documents in Web of Science图2 Web of Science 分词文献数量统计
本文通过详细阅读近20 年文献资料,总结归纳中文分词的瓶颈和算法,提出新的瓶颈及改进方向。
由于中文的复杂性,分词时粒度的选择尤为重要。目前分词粒度分为粗粒度和细粒度两类,例如“中华人民共和国”,粗粒度:中华人民|共和国;细粒度:中华|人民|共和国。
虽然人类阅读不会发生障碍,但对于计算机来说,尤其是当分词用于搜索引擎时,细粒度可能导致搜索准确率降低;当用于知识图谱构建时则导致图谱复杂性增加,准确度降低。
歧义字段在中文中普遍存在,而歧义字段又是中文切分的一个难点。梁南元教授[2]最早对歧义字段进行了两种基本定义:
(1)交集型切分歧义。汉字串ASB 称作交集型切分歧义,如果满足AS、SB 同时为词(A、S、B 分别为汉字串),此时汉字串S 称作交集串。如句子“人民生活幸福”,分词的可能结果有:
Eg1:人民|生活|幸福
Eg2:人|民生|活|幸福
如果由计算机判断,则“人民”和“民生”皆为可能词汇,就会造成交集型歧义。
(2)组合型切分歧义。汉字串AB 称作多义组合型切分歧义,如果满足A、B、AB 同时为词,如“校友会”一词:
Eg1:我|在|校友会|工作
Eg2:我|的|校友|会|来
“校友”和“会”可以单独成词,也可组合成词,就造成了组合型歧义。
歧义字段给分词带来极大困扰,想要作出正确的切分判断,需要结合上下文语境,甚至韵律、语气、重音、停顿等,这对机器来说无疑是困难的。
未登录词有两种,一种指已有的词表中没有收录的词,另一种指训练语料中未曾出现过的词,而后一种也可被称作集外词(Out of Vocabulary,OOV),即训练集以外的词。未登录词通常包含以下几种类型:
(1)新出现的普通词汇。随着时代变迁,语言不断发展,词汇也在更新,尤其是网络用语中层出不穷的新词,这对分词甚至自然语言处理都是一大挑战。
(2)专有名词。如人名、地名以及组织机构名称等。
(3)专业名词和研究领域名称。将分词运用到某些特定领域或专业,需要特定的领域词典。
(4)其它专用名词。如新产生的产品名、电影名称、书籍名称等。
由此可见,粒度选择、歧义消除和未登录词识别是干扰中文分词的重要原因。孙茂松等[3]发现在真实语料库中,由未登录词造成的分词错误是歧义切分的5 倍以上,提高未登录词识别对提升分词性能有重大影响。
基于规则的匹配方法又称为机械分词方法或基于字典的分词方法,就是按照一定的规则将测试的字段与机器词典中的词条相匹配。
1984 年梁南元教授根据汉俄翻译机器提到的6-5-4-3-2-1 分词方法,利用词典中最长词的长度作为匹配字段长度进行匹配,成功则输出,失败则去掉匹配字段中的最后一个字,继续匹配,直到全部切分为止,称为最大匹配法,并首次将最大匹配法用于中文分词任务,实现了我国第一个自动汉语分词系统CDWS。除此之外,还有逆向最大匹配法和双向最大匹配法。
基于词典的分词方法直观简单,可以通过增减词典调整最终的分词效果。当词典直接决定分词结果的好坏时,词典的构造就成了重中之重,即使到现在词典的作用仍然不可磨灭。
分词的词典机制主要有:基于整词二分、基于TRIE 索引树以及基于逐字二分。2000 年孙茂松等通过实验比较3 种词典机制,认为基于逐字二分的分词词典机制简洁、高效,能较好地满足实用型汉语自动分词系统需要;2001 年杨文峰等[4]则认为原始的3 种词典机制在更新时维护成本较高且效率较低,故根据PATRICIA tree 的数据结构设计一种新的分词词典机制,可以实现快速查询及快速更新功能;2003 年李庆虎等[5]提出双子哈希机制,在不提升现有词典机制空间复杂度和维护复杂度基础上,提高了中文分词的速度和效率。
随后,通过改进分词词典提高分词性能的文章层出不穷。虽然基于词典的分词方法简洁高效、操作简单,但是准确度不高,不能很好地处理歧义切分和未登录词识别。
基于统计的分词方法是把每个词看作字组成,相邻的字在语料库中出现的次数越多,就越可能是一个词。
Mashall 于1993 年提出了CLAWS 算法,利用概率统计模型对语料库的词性进行自动标注;Derose[6]在CLAWS算法基础上提出WOLSUNGA 算法。此后,中文分词利用统计方法在词性标注方面取得了巨大成就。2002 年第一届SIGHAN 会议召开后,Xue 等[7]第一次提出基于字标注分词,成为中文分词领域的重要方法。一年后,在最大熵模型上实现基于字标注的分词系统,在2003 年的bakeoff测评中取得好成绩,之后发表论文详细阐述了基于字标注的分词模型。序列标注就是将每个中文单字标注为B(),I(),O(),E(),S()的形式,以此进行分词,开启了分词领域新模式。
目前,基于统计的字序列标注分词方法最常用的步骤如下:①构建语言模型;②对句子作单词划分,对划分结果利用隐马尔可夫(Hidden Markov Model,HMM)或条件随机场(Conditional Random Field,CRF)等进行概率计算,获得概率最大分词方式。
其中,HMM 模型是利用已分词的训练集训练模型,得到三概率矩阵,利用维特比算法和三概率矩阵分析测试集标签,利用标签进行分词,最常用的结巴分词就是基于此模型;此后,Peng 等(2004)又将CRF 引入分词学习中。CRF 模型较于HMM 模型能更好地利用上下文信息,以及外部信息特征完成实验。
基于统计的分词方法可以很好地识别未登录词和消除歧义,但是统计模型复杂度高,运行周期长,依赖人工特征提取。随着计算机运行速度加快,神经网络逐渐进入分词领域。
2001 年,Bengio 等[8]提出第一个神经语言模型——前馈神经语言模型,并诞生了词嵌入这一概念,随后又提出一种基于神经网络变种的概率语言模型,将神经网络引入自然语言处理任务。神经网络因其自动学习特征,避免了传统的特征构建,早在20 世纪就有学者试图在中文分词任务中运用神经网络,但是分词速度不理想。到了21 世纪,随着技术提升以及深度学习的发展,神经网络在中文分词领域有了重大进步。自序列标注方法在bakeoff 测试中取得优异成绩后,将神经网络与序列标注相结合成为中文分词领域的通用框架。
2011 年Collobert 等[9]为改善以往每个NLP 任务需要设计构造新模型的思想,提出一种可以推广到其它多种NLP 任务中的多层神经网络体系结构;2013 年Zheng 等[10]在Collobert 的基础上,为减少学习算法对特征提取的依赖性,将整个句子作为输入进行多层特征提取,得到抽象的特征表示,同时提出了Perceptron-Style 算法,并首次探讨利用以上模型算法在中文分词和词性标注任务中与CRF统计模型比较速度上的优劣;2014 年,Pei 等[11]在此基础上提出了最大边缘张量神经网络模型,模型模拟了标签和上下文字符之间的交互,以获得更多的语义信息,加快训练速度,防止过拟合,提高了准确度。
但是,这些算法受限于输入窗口大小,无法利用文本的时间序列信息进行分词,递归神经网络(Recursive Neural Network,RNN)的分词方法应运而生。递归神经网络利用顺序信息,在处理新输入信息的同时存储上一时刻信息。利用当前输入和上一时刻输出,同时得到这一时刻输出。利用递归神经网络可以在序列标记任务中考虑序列信息,提高分词准确度。
2015 年,为了对输入上下文进行建模,Chen 等[12]提出门控递归神经网络模型,利用重置门和更新门控制信息的传送和抽取。而为了解决神经网络利用固定窗口而忽视长距离信息问题,在Sutskever 等[13]基础上提出在分词领域运用长短时记忆网络(Long-short-term memory,LSTM)思想,成为分词领域里程碑式的进步。
LSTM 是在RNN 基础上提出的。虽然RNN 已经在语音识别、语言建模和文本生成方面取得巨大成就,但是由于梯度消失和梯度爆炸导致很难训练长距离信息,LSTM则允许网络学习何时忘记先前信息以及何时在给定信息的情况下更新存储单元,将重要信息保留在存储单元中以避免窗口大小限制,可以很好地应用在分词领域;Chen等[14]在一般模型(包括字嵌入层、神经网络层和标签推理层)基础上在网络层运用LSTM,从精确度(precision)、召回率(recall)、FI 值以及OVV 召回率4 个方面评估,发现与最新模型相比,LSTM 可以利用较小的窗口获得最好的性能。
但是LSTM 分词模型自提出后并没有在分词领域得到广泛研究与应用,直到2016 年Yao 等[15]为了充分利用上下文信息进行分词才提出了双向LSTM;早在2015 年,为解决词性标注问题,Huang 等[16]提出双向LSTM-CRF 模型,实验证明该模型在词性标注上的准确度要优于当前模型,最高可达到97.55%;随后,Xu[17]提出一种基于依赖的门控递归网络,将LSTM 和门控递归神经网络相结合;黄丹丹等[18]将注意力机制融入双向LSTM-CRF 模型;Zhang等[19]第一次提出将Lattice LSTM 应用到中文实体识别中;Yang 等[20]在Zhang 的基础上提出在Lattice LSTM 中加入子词编码,发现使用Lattice+word(词)或Lattice+subword(子词)替换字符信息后模型性能更好,并提出将具有域词典的Lattice LSTM 结构用于跨领域分词的可行性。
2018 年,新型语言模型BERT 刷新了11 项NLP 任务的性能记录。Huang 等[21]提出采用多准则的学习方法进行中文分词,利用BERT 进行预训练产生词向量进行特征提取,对BERT 模型进行层级修剪来平衡分割速度和准确度,同时采集不同准则的数据集,捕获每个数据集的异构分段标准以及公共知识,最后利用CRF 推理层得到最佳标签序列。这种方法不仅提高了分词性能,加快了计算速度,还减小了模型尺度。BERT 为中文分词开创了新的突破口,大幅提高了分词准确度。
基于神经网络的分词模型经过近20 年的研究已趋于成熟,研究人员在序列标注、网络模型以及推理机制等方面不断改进,大大提高了中文分词的准确度。但是分词速度和跨领域分词等方面仍然存在不足。
随着计算机技术的发展,分词领域的准确度也随之提高,但是通过增加模型内部复杂度来提高准确度,损害了运行速度;除此之外,未登录词的影响仍然存在,专业名词的识别失误在跨领域分词中尤为明显。
自从将神经网络应用到中文分词领域,随着网络模型的不断改进,中文分词的准确度大大提升,歧义切分的影响逐渐缩小,但是未登录词的识别方法仍需改进,尤其在跨领域分词任务中。
2018 年,Ma 等[22]使用双向LSTM(Bi-LSTM)模型进行中文分词,但未提出新的模型或改进模型,而是在LSTM 模型基础上预训练字向量、Dropout 和调整超参数以达到State-of-the-art(SOTA),详细比较了3 种技术对性能的影响。预训练字向量(词向量)已经成为NLP 任务的基础工作,例如Word2vec、ELMO、BERT 等,都是对字向量训练的提升算法,实验发现预训练字向量对性能优化贡献最大。针对不同的数据集调整参数可以很好地提高模型的准确度。最新的分词模型大约三分之一的错误来自注释不一致问题,三分之二由词汇不足造成,使用外部词典或知识库非常重要,而调整模型结构对这类错误几乎毫无用处;Zhang 等[23]提出结合字典的神经网络分词,该方法可以解决由词稀少引起的问题,并在模型应用于不同的域时仅需添加额外的域特定词典,其它参数可保持不变。该方法在跨域CWS 任务中得到明显改进,也恰恰证明了Ma 等关于词汇不足的重要性结论。
Zhao 等[24]提出结合未标记和部分标记数据的神经网络用于跨领域中文分词方法。发现在跨域分词中,Bi-LSMT+LM(未标记)+PL(部分标记)在大部分测试集中具有最佳性能,同时在域内数据分词中有最佳性能。未标记和部分标记数据的结合应用,为跨域分词乃至域内分词提供了一种新的研究方向。
跨领域分词瓶颈主要来自于OOV 的原始瓶颈,专有名词的限制使该瓶颈不可能完全消除,增加领域词典可以很好地解决跨领域分词问题。随着科技进步,强大知识库的构建使运用外部辅助方法变得越来越简便。但是,不同领域的通用分词算法仍需进一步研究。
速度是任何系统不可避免的热点问题,分词模型的高准确率导致复杂的模型层出不穷,损害了分词速度,即使在CPU 运算速度不断提高的情况下,LSTM 分词模型运行时间仍可达3 天,Bi-LSTM 的时间也达17 个小时,而CRF的加入使模型运行速度更加缓慢。分词作为自然语言处理的基础步骤,不仅需要高准确度,运行速度也是目前研究热点。
2016 年,Cai 等[25]提出一种新颖的神经网络模型,构建句子完整的切分历史,直接在结果上进行建模可发现训练和测试速度慢的原因。随后提出一种贪婪神经词分割器,通过去掉不必要的设计建立更有效的字符组合模型,大幅降低训练和运行时间[26]。
刘志明等[27]提出一种最简门单元模型,在LSTM 基础上删除输出门,将隐藏状态和细胞状态合并,输入门和遗忘门合为更新门以简化网络结构。结果显示MGU 精度并无大的差异,而推理速度是LSTM 模型的3 倍,训练耗时则是LSTM 的1/2,证明通过简化模型提高训练速度减少训练时间的方法是可行的。
除此之外,循环神经网络在长距离信息保存上的优越性,使得NLP 中循环神经网络占主要地位,但实际上卷积神经网络(Convolutional Neural Network,CNN)能更好地理解语义信息,并利用稀疏连接缩短运算时间,提高效率。文献[28]为改进人工设计特征提取,采用卷积神经网络进行特征提取并取得较好效果;涂文博等[29]验证了采用无池化卷积神经网络的速度是池化层卷积神经网络的4 倍左右;王星等[30]认为目前的分词模型只利用到汉字,字根和五笔等深层次特征也应考虑在内。采用膨胀卷积神经网络,使用CRF 进行解码,结果表明准确度和速度都高于Bi-LSTM 模型。可见,卷积神经网络早已进入分词领域。
对于分词速度的影响因素主要有网络结构的复杂性以及解码方式。目前,分词准确度已达到相当高的水平,因此在保证准确率的前提下,速度成为分词研究的重要方向,而卷积神经网络对速度和准确率的兼顾性使其具有极大的研究价值。
分词技术正在逐步改进。基于词典分词的机械分词方法操作简单,实现快速,但利用已有的词典直接匹配获取存在领域局限性,并且歧义性和局外词汇识别差。基于统计分词的监督学习算法改进了歧义等问题,将分词转换为序列标注问题,CRF 模型和HMM 模型成为统计分词的主要方法。近年,神经网络的出现使分词准确度有了极大提高,但在Bi-LSTM+CRF 算法应用于分词领域后,准确度的提升空间逐步变小,如表1 所示。
Table 1 F1 value of participle in each document表1 各文献分词F1 值
虽然各文献所用方法存在外部差异,如外加字典、预处理、Dropout 等,但结果波动不大。由此可见,目前分词领域研究已经趋于成熟,作为基础任务可满足绝大部分NLP问题研究。但是,分词性能和速度存在不一致性,而卷积神经网络由于速度优势,近年也常应用于自然语言处理领域并取得显著成效。
中文分词研究应该兼顾准确度与速度,在两者之间选择平衡点,卷积神经网络在速度上的优势势必会给分词领域带来重大改进。