APP下载

基于深度学习的中文分词方法研究*

2020-06-09胡晓辉朱志祥

计算机与数字工程 2020年3期
关键词:字符分词分布式

胡晓辉 朱志祥

(1.西安邮电大学物联网与两化融合研究院 西安 710061)(2.陕西省信息化工程研究院 西安 710061)

1 引言

作为自然语言处理中的一个重要研究方向,分词的目的是将一个完整的句子切分成词语级别。由于英语语句是由不同的单词组成,故其分词可以依据单词间的分界符来划分。而由于中文语句其基本组成单位是字,无法像英语那样依据分界符来划分,所以中文分词相比于英语分词更增加了一定的难度。由于分词的基础性,所以分词的好坏对模型的提升起着重要的作用[1]。

20 世纪80 年代,便有学者进行了中文分词的研究,到目前为止,其基本分词方法主要包含以下几种。1)通过构建一个语库词典,分词时与字典进行匹配[2];2)通过建立一系列的分词规则,利用分词规则进行分词[3~4];3)使用传统机器学习算法进行分词,如最大熵模型[5],条件随机场模型[6]等;4)引入深度学习模型进行分词。相比前三种的分词方法,将深度学习应用到中文分词取得了重要的成就。

2011 年,Weston 将神经网络模型应用到自然语言处理方向上[7]。Chen 等在 2013 提出一种感知器算法,将其应用到中文分词任务上,加速了训练时间[8]。在 Chen 等的基础上,Ge 等提出一种MMTNN 模型,该模型在中文分词任务上有较好的效果[9]。2015 年,Chen 先后将 LSTM 模型[10]和基于栈的GRU 模型[11]应用到中文分词上,这两种模型都取得了不错的效果。由于单向LSTM 只能利用上文的语句,不能充分利用下文的信息。所以,2015 年 ,Huang 将 BLSTM+CRF应用到中文分词上[12],相比与单向 LSTM 模型,该模型可以充分利用上下文信息。

2 深度学习模型

2.1 双向LSTM

1986 年,Rumelhart等提出的RNN(递归神经网络)[13],其网络结构如图1所示。

图1 RNN网络结构示意图

循环神经网络之所有具有保持信息的能力,是由于当前输出与上一时间点的输出有关。将RNN按照时间展开,如下图所示。

图2 RNN网络展开图

其中xt代表t 时刻输入的值x,U 表示输入层到隐藏层的权重值,st代表t时刻的隐藏层的值,ot表示t 时刻输出的值,V 表示隐藏层到输出层的权重值,W 表示t-1 时刻隐藏层值输入到t 时刻隐藏层的权重。由上图看出,st的值不仅与当前输入xt有关,而且与上一时刻的st-1有关。RNN的计算方法公式如下:

式(1)是输出层的计算公式,输出层是一个全连阶层,式中g 代表激活函数。式(2)隐藏层的计算公式,它是一个循环层,f代表激活函数。

将式(2)不断地带入到式(1)中,可以发现,t时刻的输出不仅与当前输入有关,且与t-2 时刻,t-1时刻……等有关。

RNN 解决了信息不能保留的难题,但当中间层数增多时,会出现梯度消失的问题,从而造成长距离历史信息不能够被保留,只能利用部分信息的情况。

LSTM 网络[14]的出现解决了 RNN 不能保留长距离历史信息的情况。LSTM 网络结构如图3 所示。

图3 LSTM网络结构图

LSTM 网络由于加入了记忆单元和输入门,遗忘门,输出门等门限机制,实现了对长距离信息的有效利用。其具体计算公式如下:

其中i,f,o分别表示输入门,遗忘门和输出门,xt表示输入,ht表示隐藏层输出,W 表示连接两层的权重,b表示偏置量,c标记记忆单元的状态。

LSTM 网络由于解决了信息长距离依赖的问题,在序列问题取得了巨大的成功。它被广泛地应用到情感分类[15~16]、机器翻译[17]、语义识别[18]以及自助问答[19]等问题上。但LSTM 它只能捕捉输入上文语句的信息,对下文的信息不能充分利用。例如对于输入语句“美丽的小明是一只小猫”,使用单向LSTM 的话便无法推断出小明的类型。所以引入了双向 LSTM。2005 年,Graves 使用 LSTM 进行分类问题研究,取得了比单向LSTM 好的效果[20]。其结构如图4所示。

图4 BLSTM网络结构图

2.2 卷积神经网络

在计算机视觉获得巨大成功的卷积神经网络,由于其特有的卷积层与池化层,可以有效地提取到图片的局部特征,实现图片抽象化的处理。

卷积神经网络通常由输入层,若干卷积层,若干池化层,全连接层,输出层组成。一般池化层跟在卷积层后面,但也有卷积层或池化层单独使用。卷积层由多个特征面组成,每个特正面由多个神经元组成,它的每一个神经元通过卷积核与上一层特征面的局部区域相连。卷积核是一个权重矩阵。卷积核通过卷积操作不断提取输入矩阵的各种特征。池化层对经过卷积层的矩阵进行局部池化操作,一般有最大值池化和均值池化。

2.3 条件随机场

在CRF的应用领域,CRF可以使用字、词、词性等上下文特征,同时也可以利用外部训练出的字典等特征,即可以将有关的特征都融合进文本特征中去。由于CRF 结合了HMM 和最大熵模型的特点,同时又克服了HMM假设的限制及最大熵模型标记偏执问题,具有一定的优越性。所以,本文最后模型标志层采用线性链条件随机场。

在中文分词中应用CRF,我们需要定义一些特征函数,这些特征函数依据一些序列规则为每一个标注序列进行打分,打分只能为0 或者1,例如B 开始的单词,其后边必然要接一个E,不可能B 后边还跟着一个B。然后将所有特征函数对某一序列的打分综合起来,即为该序列的最终打分值。这些特征函数接受四个参数值,用来表示句子的S,用来表示句子s 中的第i 个字符的i,li用来表明要评分的序列给第i 个字符注明的词性,li-1用来表示要评分的序列给第i-1个字符标注的词性。特征函数集对序列的评分函数如下:

上式中里面的求和是对序列中每一个位置的字符的特征值求和,外面的是对函数集中的所有函数对一个序列的打分求和。再对这个分数指数化和标准化,即可以得到一个标注序列的概率值如下式:

3 基于BLSTM+CNN+CRF 的中文分词模型

中文分词是序列标注问题中的一类,它是基于字符级的分类问题。即我们将每一个字符进行分类的问题。本人将字符的类别划分为{B,M,E,S,P,U}六种类别,其中 B 代表词语的开始的字,M 代表词语的的中间字,E 代表词语的最后的一个字,S代表单个字成词语,P代表填充的值,U代表未知属性。对训练集的字符进行编码,通过设计的神经网络,训练模型,使得模型可以对每一个字符进行判别分类,从而达到分词的效果。

3.1 文本序列化

在进行文本向量化之前,先对原始文本数据进行数据预处理,将其变成成一行一句话的形式,每个字符由空格隔开,再将每个字符转换成其所对应的标志项。例如我是中国人转换成SBES形式。

字符序列化,由于文本内容不能被计算机识别,所以我们需要将训练集中每一个字符转换成一个唯一标示符数字,并取训练集中包含字符最多的句子的长度作为输入序列的标准长度,长度不够的序列自动补零。

3.2 文本向量化

在输入模型训练之前,先对文本进行向量化表示。对文本向量化的方法一般有两种。

1)one-hot 表示。该方法在对字符向量化表示之前,先定义一个包含许多字符的字典,一个字符向量的表示成一个1,其余全为0 的向量,其中1 的位置,即为该字符在字典中出现的位置。这种方式编码简单,一定程度上能够表示文本。但是这种方法存在两个问题,一个是维度爆炸的问题,由于向量的长度由字典包含的字符个数决定,而字典包含的字符越多,文本向量的表示就越准确,所以最后形成一个巨大的稀疏矩阵,这就需要消耗大量的计算资源。另一个是不能有效地表达语义。字符在字典中的位置是随机的,所以无法通过字符的向量表示来确定它们的远近关系,不能深刻地表达出字符背后的语义。

2)分布式表示。针对one-hot表示存在的两个缺点,学者们提出了分布式表示方法,又称字嵌入(embedding)。该方法通过将字映射到一个低维空间,将每一个字转换成一个低维向量。同时,由于该表示方法在训练时后考虑字前后的字符,所以映射的向量可以通过计算向量间的距离来表达语义的远近。

本文分布式表示方法采用谷歌于2013 年开源的word2vec 模型,word2vec 将词向量映射到一个低维空间,训练出的词向量能够计算向量间的距离来表示语义关系的远近。word2vec 包含CBOW 和Skip-gram 两种模型,Skip-gram 模型通过当前词语预测该词语前后的c 个词语,而CBOW 通过文本的前后词语预测当前词语。两种模型训练过程类似,本文将仅介绍CBOW 模型的训练过程。它的训练过程包含一个三层神经网络,即输入层,隐藏层,输出层。输入层是当前词语W 的前后c 个词语的词向量,输出为当前词语w 的词向量,隐藏层即为该词语的的分布式向量表示。

3.3 序列填充

由于每句话中的词语数目不一样,我们将数据输入模型之前,需要将序列化的句子填充,使每句话都是等数目的词语,一般选用0 来填充句子序列。

3.4 模型层

本文模型由双向LSTM、CNN 以及CRF 组成,双向LSTM 用来提取输入文本序列的前后信息,CNN用来提取文本的局部特征信息,CRF进行最后的序列标注。

双向LSTM 由两层网络组成,一层是从开始到结尾的LSTM 层,一层是从结尾到开始的LSTM层。将填充完的序列数据通过嵌入层,得到每一个词语的分布式向量。将分布式向量由前向后输入LSTM 层,再由后向前输入LSTM 层,得到一个与分布式向量等维度的向量。

CNN层由一个卷积层组成,卷积核的高度由分布式向量的长度决定,卷积核的长度决定每次提取当前词语前后相关词语的个数。将经过嵌入层输出的分布式向量输入CNN 层,得到一个长度为最大词语个数,宽度为卷积核个数的向量。

CRF层主要进行最后的序列标注,将输入的数据标注成B,M,E,S 的向量形式形式。在本文模型中,将分布式向量分别通过双向LSTM 和CNN,得到两种特征向量,将这两种向量进行合并,再经过全连接层,得到一个长度为最大词语数,宽度为类别数目的向量,输入到CRF 层,进行最后的序列标注,输出最后类别的向量表示。

4 实验

4.1 评价指标

本次采用了准确率、召回率和F1 三个综合指标来评价本次模型的性能优劣。其中准确率是指某类别下预测正确的的样本数目与预测结果该类别总的数据样本数目的比值,本文用P 表示,查全率是指某类别下预测正确的样本数目与该类别下真实的样本数目的比值,本文用R 表示。用A 表示分类正确的样本数据,B 表示错误的划分到该类别的样本数,C 表示属于某类,但没有划分到该类的样本数。则准确率与查准率的公式计算如下:

从式(10)、(11)可以看出,这两个指标是矛盾的指标,即当准确率高的时候,查准率往往偏低,而查准率高的时候,准确率又变得很低,所以不能完全的表现出算法的优劣。Fθ指标可以很好地解决上述问题。它的定义如下公式所示:

其中θ必要大于0,反应了R 与P 的相对重要性。当θ比 1 大时,R 比 P 重要,当θ比 1 小时,R 没有P 重要。本次我们实验选取θ=1,对应的指数F1表示为

4.2 实验环境

本实验采用曙光A620r-G 服务器,内存为64G,CPU 型号:AMD Opteron 6128,操作系统为Ubuntu14.04.64bi,语言是采用 python3.6 版本,使用了gensim,re等包,深度学习框架使用的keras。

4.3 实验设计与结果分析

本次实验通过比较不同字向量长度,最终选择字向量长度为128。各种字向量性能指标如表1。

表1 不同字向量的长度性能对比

字向量的长短对模型的性能有直接的影响,过长的向量增加了内存消耗空间,过短的词向量又不能完全表达语义。谷歌实验室的研究表名,字向量的长度设置在50~300 之间都是合理的,本文通过比较不同字向量长度,确定本文字向量长度为128。

本次实验Dropout 设置为20%。Dropout 是随机删除一些节点,有利于减少模型过拟合,而设置过高又容易导致欠拟合,本文设置为20%。

本次实验分别在三个数据集上进行模型训练,并与其他的几种模型进行比较,发现我们提出的模型相比以往的模型有一定的提高,各个实验模型的结果如表2所示。

表2 不同模型的指标对比

由上表可以看出,由于本文应用了CNN 到序列标注问题上,加强了模型提取局部单词的能力。在中文分词上,相比于其他模型,分词效果有一定的提高。

5 结语

针对自然语言处理中的中文分词任务,本文提出了一种基于BLSTM+CNN+CRF 的模型,该模型兼具了BLSTM 可以利用长远距离信息和上下文信息的优点和CNN 提取局部特征的的特点,在中文分词任务上有较好的效果。由于实体识别,中文分词都属于序列标注问题,具有一定的相似性,因此该模型也可以应用到实体识别等一系列的序列标注问题上。

尽管本文提出的模型在中文分词上出现了较好的效果,但本文依赖人民日报预料训练出的字向量过于简单,若想取得更好的效果,应该在更大规模的数据集上训练字向量,从而得到更好的效果。

猜你喜欢

字符分词分布式
分词在英语教学中的妙用
论高级用字阶段汉字系统选择字符的几个原则
浅析分布式发电对电力系统的影响
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
结巴分词在词云中的应用
结巴分词在词云中的应用
基于预处理MUSIC算法的分布式阵列DOA估计
分布式并联逆变器解耦电流下垂控制技术