基于BiLSTM-CNN-CRF的中文分词(一)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于BiLSTM-CNN-CRF的中文分词(一)相关的知识,希望对你有一定的参考价值。

参考技术A         在序列标注任务(中文分词CWS,词性标注POS,命名实体识别NER等)中,目前主流的深度学习框架是BiLSTM+CRF。其中BiLSTM融合两组学习方向相反(一个按句子顺序,一个按句子逆序)的LSTM层,能够在理论上实现当前词即包含历史信息、又包含未来信息,更有利于对当前词进行标注。BiLSTM在时间上的展开图如下所示。

        若输入句子由120个词组成,每个词由100维的词向量表示,则模型对应的输入是(120,100),经过BiLSTM后隐层向量变为T1(120,128),其中128为模型中BiLSTM的输出维度。如果不使用CRF层,则可以在模型最后加上一个全连接层用于分类。设分词任务的目标标签为B(Begin)、M(Middle)、E(End)、S(Single),则模型最终输出维度为(120,4)的向量。对于每个词对应的4个浮点值,分别表示对应BMES的概率,最后取概率大的标签作为预测label。通过大量的已标注数据和模型不断迭代优化,这种方式能够学习出不错的分词模型。

        然鹅,虽然依赖于神经网络强大的非线性拟合能力,理论上我们已经能够学习出不错的模型。但是,上述模型只考虑了标签上的上下文信息。对于序列标注任务来说,当前位置的标签L_t与前一个位置L_t-1、后一个位置L_t+1都有潜在的关系。

        例如,“我/S 喜/B 欢/E 你/S”被标注为“我/S 喜/B 欢/B 你/S”,由分词的标注规则可知,B标签后只能接M和E,因此上述模型利用这种标签之间的上下文信息。因此,自然语言处理领域的学者们提出了在模型后接一层CRF层,用于在整个序列上学习最优的标签序列。添加CRF层的模型如下图所示。

上述图片出自 http://www.aclweb.org/anthology/N16-1030 。

模型通过下述公式计算最优标注序列,A矩阵是标签转移概率,P矩阵是BiLSTM的预测结果。

模型训练的时候,对于每个序列 y 优化对数损失函数,调整矩阵A的值。

当模型训练完成,模型预测的时候,按如下公式寻找最优路径:

Y_x表示所有可能的序列集合,y*表示集合中使得Score函数最大的序列。

(以上为论文的核心部分,其它细节请参阅原文)

        至此,我们已经大致了解BiLSTM-CRF的原理。对于分词任务,当前词的标签基本上只与前几个和和几个词有关联。BiLSTM在学习较长句子时,可能因为模型容量问题丢弃一些重要信息,因此我在模型中加了一个CNN层,用于提取当前词的局部特征。CNN用于文本分类的模型如下。

        设句子输入维度为(120,100),经过等长卷积后得到T2(120,50),其中50为卷积核个数。对于当前词对应的50维向量中,包含了其局部上下文信息。我们将T1与T2拼接,得到T3(120,178),T3通过全连接层得到T4(120,4),T4输入至CRF层,计算最终最优序列。最终模型BiLSTM-CNN-CRF如下。

本文模型并不复杂,下文将讲述一下我实现时的一些细节。主要包括:

1. 模型输入需要固定长度,如何解决

2. 如何做好模型的实时训练

3. 与结巴分词的性能比较

4. 如何做成微信分词工具、分词接口服务

中文分词


中文分词(Chinese Word Segmentation):是指将一个汉字序列切分为一个个单独的词。中文分词是中文自然语言处理的一个最基本的环节。中文分词与英文分词有很大的不同,对英文而言,一个单词就是一个词,而汉语是以字为基本的书写单位,词语之间没有明显的区分标记,需要人为切分。


根据中文分词的特点,可以把中文分词算法分为四大类:

  • 基于规则的分词方法

  • 基于统计的分词方法

  • 基于语义的分词方法

  • 基于理解的分词方法



1

基于规则的分词方法


基于规则的分词方法又称为机械分词方法、基于字典的分词方法。它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配。若在词典中找到某个字符串,则匹配成功。


该方法有三个要素:分词词典、文本扫描顺序和匹配原则。文本的扫描顺序有正向扫描、逆向扫描和双向扫描。匹配原则主要有最大匹配、最小匹配、逐词匹配和最佳匹配。


最大匹配法(MM):基本思想是:假设自动分词词典中的最长词条所含汉字的个数为 i,则取被处理材料当前字符串序列中的前 i 个字符作为匹配字段,查找分词词典,若词典中有这样一个 i 字词,则匹配成功,匹配字段作为一个词被切分出来;若词典中找不到这样的一个 i 字词,则匹配失败,匹配字段去掉最后一个汉字,剩下的字符作为新的匹配字段,再进行匹配,如此进行下去,直到匹配成功为止。


逆向最大匹配法(RMM):该方法的分词过程与 MM 法相同,不同的是从句子(或文章)末尾开始处理,每次匹配不成功时去掉的是前面的一个汉字。


逐词遍历法:把词典中的词按照由长到短递减的顺序逐字搜索整个待处理的材料,一直到把全部的词切分出来为止。不论分词词典多大,被处理的材料多么小,都得把这个分词词典匹配一遍。


设立切分标志法:切分标志有自然和非自然之分。自然切分标志是指文章中出现的非文字符号,如标点符号等;非自然标志是利用词缀和不构成词的词(包 括单音词、复音节词以及象声词等)。设立切分标志法首先收集众多的切分标志,分词时先找出切分标志,把句子切分为一些较短的字段,再用 MM、RMM 或其它的方法进行细加工。这种方法并非真正意义上的分词方法,只是自动分词的一种前处理方式而已,它要额外消耗时间扫描切分标志,增加存储空间存放那些非 自然切分标志。


最佳匹配法(OM):此法分为正向的最佳匹配法和逆向的最佳匹配法,其出发点是:在词典中按词频的大小顺序排列词条,以求缩短对分词词典的检索时 间,达到最佳效果,从而降低分词的时间复杂度,加快分词速度。实质上,这种方法也不是一种纯粹意义上的分词方法,它只是一种对分词词典的组织方式。OM 法的分词词典每条词的前面必须有指明长度的数据项,所以其空间复杂度有所增加,对提高分词精度没有影响,分词处理的时间复杂度有所降低。


基于规则的分词方法的优点是简单,易于实现。但缺点有很多:匹配速度慢;存在交集型和组合型歧义切分问题;词本身没有一个标准的定义,没有统一标准的词集;不同词典产生的歧义也不同;缺乏自学习的智能性。



2

基于统计的分词方法


基于统计的分词方法是在给定大量已经分词的文本情况下,利用统计机器学习模型学习词语切分的规律,从而实现对未知文本的切分。


该方法的主要思想:词是稳定的组合,在上下文中,相邻的字同时出现的次数越多,越有可能构成一个词。因此字与字相邻出现的概率能较好反映词的可信度。可以对训练文本中相邻出现的各个字的组合的频度进行统计,计算它们之间的互现信息。互现信息体现了汉字之间结合关系的紧密程度。当紧密程 度高于某一个阈值时,便可以认为此字组可能构成了一个词。该方法又称为无字典分词。


该方法应用的主要统计模型有:N元文法模型(N-gram)、隐马尔科夫模型(Hiden Markov Model, HMM)、最大熵模型(ME)、条件随机场模型(Conditional Random Fields, CRF)等。


在实际的应用中,这种分词方法都需要使用分词词典来进行字符串匹配分词,同时使用统计方法识别一些新词,即将字符串频率统计和字符串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。



3

基于语义的分词方法


语义分词法引入了语义分析,对自然语言自身的语言信息进行更多的处理,如扩充转移网络法、知识分词语义分析法、邻接约束法、综合匹配法、后缀分词法、特征词库法、矩阵约束法、语法分析法等。


扩充转移网络法:该方法以有限状态机概念为基础。有限状态机只能识别正则语言,对有限状态机作的第一次扩充使其具有递归能力,形成递归转移网络 (RTN)。在RTN 中,弧线上的标志不仅可以是终极符(语言中的单词)或非终极符(词类),还可以调用另外的子网络名字分非终极符(如字或字串的成词条件)。这样,计算机在 运行某个子网络时,就可以调用另外的子网络,还可以递归调用。词法扩充转移网络的使用, 使分词处理和语言理解的句法处理阶段交互成为可能,并且有效地解决了汉语分词的歧义。


矩阵约束法:其基本思想是:先建立一个语法约束矩阵和一个语义约束矩阵, 其中元素分别表明具有某词性的词和具有另一词性的词相邻是否符合语法规则, 属于某语义类的词和属于另一词义类的词相邻是否符合逻辑,机器在切分时以之约束分词结果。



4

基于理解的分词方法


基于理解的分词方法是通过让计算机模拟人对句子的理解,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。

它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。目前基于理解的分词方法主要有专家系统分词法和神经网络分词法等。


专家系统分词法:从专家系统角度把分词的知识(包括常识性分词知识与消除歧义切分的启发性知识即歧义切分规则)从实现分词过程的推理机中独立出来,使知识库的维护与推理机的实现互不干扰,从而使知识库易于维护和管理。它还具有发现交集歧义字段和多义组合歧义字段的能力和一定的自学习功能。


神经网络分词法:该方法是模拟人脑并行,分布处理和建立数值计算模型工作的。它将分词知识所分散隐式的方法存入神经网络内部,通过自学习和训练修改内部权值,以达到正确的分词结果,最后给出神经网络自动分词结果,如使用 LSTM、GRU 等神经网络模型等。


神经网络专家系统集成式分词法:该方法首先启动神经网络进行分词,当神经网络对新出现的词不能给出准确切分时,激活专家系统进行分析判断,依据知识库进行推理,得出初步分析,并启动学习机制对神经网络进行训练。该方法可以较充分发挥神经网络与专家系统二者优势,进一步提高分词效率。


--End--

扫 码

长按扫描

关 注

惊喜不断

以上是关于基于BiLSTM-CNN-CRF的中文分词(一)的主要内容,如果未能解决你的问题,请参考以下文章

中文分词算法

基于词典的中文分词算法2:最少分词法

中文分词技术

文本分类的6类方法

中文分词

基于隐马尔科夫模型的中文分词方法