中文分词系统的制作方法

文档序号:18740729发布日期:2019-09-21 01:44阅读:353来源:国知局
中文分词系统的制作方法

本发明涉及人工智能的自然语言文本处理技术,特别涉及一种中文分词系统。



背景技术:

自然语言处理(NLP,Natural Language Processing)是一个信息时代最重要的技术之一,简单来讲,就是让计算机能够理解人类语言的一种技术。自然语言是一套用来表达含义的复杂系统。在这套系统中,词是表义的基本单元。在机器学习中,如何使用向量表示词?顾名思义,词向量是用来表示词的向量,通常也被认为是词的特征向量。NLP(自然语言处理)里面,最细粒度的是词语,词语组成句子,句子再组成段落、篇章、文档。所以处理NLP的问题,首先就要拿词语开刀。词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等等),所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding),而Word2vec就是词嵌入(word embedding)的一种。简单点来说就是把一个词语转换成对应向量的表达形式,来让机器读取数据。2013年Google团队发表了word2vec工具。word2vec工具主要包含两个模型:跳字模型(skip-gram)和连续词袋模型(continuous bag of words,简称CBOW),以及两种高效训练的方法:负采样(negative sampling)和层序softmax(hierarchical softmax)。CBOW(Continuous Bag-of-Words Model)又称连续词袋模型,是一个三层神经网络,该模型的特点是输入已知上下文,输出对当前单词的预测。word2vec词向量可以较好地表达不同词之间的相似和类比关系。

自然语言处理中,分词技术是一种比较基础的模块。对于英文等拉丁语系的语言而言,由于词之间有空格作为词边际表示,词语一般情况下都能简单且准确的提取出来。而中文日文等文字,除了标点符号之外,字之间紧密相连,没有明显的词边界,因此很难将词提取出来。分词的意义非常大,在中文中,单字作为最基本的语义单位,虽然也有自己的意义,但表意能力较差,意义较分散,而词的表意能力更强,能更加准确的描述一个事物,因此在自然语言处理中,通常情况下词(包括单字成词)是最基本的处理单位。在具体的应用上,比如在常用的搜索引擎中,term如果是词粒度的话,不仅能够减少每个term的倒排列表长度,提升系统性能,并且召回的结果相关性高更准确。比如搜索query"的确",如果是单字切分的话,则有可能召回"你讲的确实在理"这样的文本。分词方法大致分为两种:基于词典的机械切分,基于统计模型的序列标注切分两种方式。

1、基于词典的方法

基于词典的方法本质上就是字符串匹配的方法,将一串文本中的文字片段和已有的词典进行匹配,如果匹配到,则此文字片段就作为一个分词结果。

2、正向最大匹配,逆向最大匹配

正向最大匹配指的是从左到右对一个字符串进行匹配,所匹配的词越长越好,比如"中国科学院计算研究所",按照词典中最长匹配原则的切分结果是:"中国科学院/计算研究所",而不是"中国/科学院/计算/研究所"。

逆向最大匹配的顺序是从右向左倒着匹配,如果能匹配到更长的词,则优先选择,比如"他从东经过我家",正向最大匹配得到的结果为"他/从/东经/过/我/家",而逆向最大匹配能够得到正确的结果"他/从/东/经过/我/家"。

3、全切分路径选择方法

全切分方法就是将所有可能的切分组合全部列出来,并从中选择最佳的一条切分路径。关于路径的选择方式,一般有n最短路径方法,基于词的n元语法模型方法等。n最短路径方法的基本思想就是将所有的切分结果组成有向无环图,每个切词结果作为一个节点,词之间的边赋予一个权重,最终找到权重和最小的一条路径作为分词结果。基于词的n元语法模型可以看作是n最短路径方法的一种优化,不同的是,根据n元语法模型,路径构成时会考虑词的上下文关系,根据语料库的统计结果,找出构成句子最大模型概率。一般情况下,使用unigram和bigram的n元语法模型的情况较多。

4、基于序列标注的分词方法

基于统计模型的分词方法,简单来讲就是一个序列标注问题。在一段文字中,我们可以将每个字按照他们在词中的位置进行标注,常用的标记有以下四个label:B,Begin,表示这个字是一个词的首字;M,Middle,表示这是一个词中间的字;E,End,表示这是一个词的尾字;S,Single,表示这是单字成词。分词的过程就是将一段字符输入模型,然后得到相应的标记序列,再根据标记序列进行分词。举例来说:"基于字符串匹配的分词方法",经过模型后得到的理想标注序列是:"BEBMEBESBEBE",最终还原的分词结果是"基于/字符串/匹配/的/分词/方法"。在NLP领域中,解决序列标注问题的常见模型主要有HMM和CRF。



技术实现要素:

本发明要解决的技术问题是提供一种中文分词系统,能降低中文分词的人工特征工程量,能够捕捉更远上下文的语义,提高分词的准确率。

为解决上述技术问题,本发明提供的中文分词系统,其包括字向量提取模块、字向量分类模块及模型输出模块;

所述字向量提取模块,用于提取中文句子的字特征得到中文句子的字向量,字特征维度包括四种词位置分类,分别为:词的首字B、词的中间字M、词的尾字E、单字成词S;

所述字向量分类模块,用于根据中文句子的字向量,得到每个字向量的各种词位置分类的概率;

所述模型输出模块,用于对中文句子的每个字向量的各种词位置分类的概率根据上下文信息进行修订,得到中文句子的目标字向量模型,中文句子的目标字向量模型的维度为(m,4),m为中文句子的字数,每个字对应4个浮点值,分别表示对应四种词位置分类BMES的概率。

较佳的,所述字向量提取模块使用word2vec算法的CBOW模型提取中文句子的字特征得到中文句子的字向量。

较佳的,所述字向量分类模块,将中文句子的字向量的字特征输入到BiLSTM网络中,得到每个字向量的各种词位置分类的概率。

较佳的,使用word2vec对所述字向量提取模块得到的中文句子的字向量进行字嵌入,使字向量的字特征维度增加;用字特征维度增加后的字向量的字特征输入到BiLSTM网络中,对中文句子的字向量进行分类,得到每个字向量的各种词位置分类的概率。

较佳的,所述模型输出模块,通过对BiLSTM网络输出的隐藏层中加一个CRF层,对中文句子的每个字向量的各种词位置分类的概率根据上下文信息进行修订,得到中文句子的目标字向量模型。

较佳的,所述模型输出模块,对BiLSTM网络输出的隐藏层中加一个线性层,最后加一个CRF层,对中文句子的每个字向量的各种词位置分类的概率根据上下文信息进行修订,得到中文句子的目标字向量模型。

本发明的中文分词系统,接入一个CRF层来进行标注,运用了字嵌入、BiLSTM和CRF结合的方式进行中文分词,充分结合利用了不同算法和神经网络模型的优点,并通过大量的已标注数据和模型不断迭代优化、依赖于神经网络强大的非线性拟合能力,学习出不错的模型,使得中文分词结果更加准确。

附图说明

为了更清楚地说明本发明的技术方案,下面对本发明所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明的中文分词系统一实施例结构示意图。

图2是CBOW模型一实施例示意图。

具体实施方式

下面将结合附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其它实施例,都属于本发明保护的范围。

实施例一

如图1所示,中文分词系统包括字向量提取模块、字向量分类模块及模型输出模块;

所述词向量提前模块,用于提取中文句子的字特征得到中文句子的字向量,字特征维度包括四种词位置分类,分别为:词的首字B、词的中间字M、词的尾字E、单字成词S;

所述字向量分类模块,用于根据中文句子的字向量,得到每个字向量的各种词位置分类的概率;

所述模型输出模块,用于对中文句子的每个字向量的各种词位置分类的概率根据上下文信息进行修订,得到中文句子的目标字向量模型,中文句子的目标字向量模型的维度为(n,4),n为中文句子的字数,每个字对应4个浮点值,分别表示对应四种词位置分类BMES的概率。

实施例一的中文分词系统,能降低中文分词的人工特征工程量,提高分词的准确率。

实施例二

基于实施例一的中文分词系统,所述字向量提取模块使用word2vec算法的CBOW(Continuous Bag-of-Words model)模型提取中文句子的字特征得到中文句子的字向量。

word2vec就是将字表征为实数值向量的一种高效的算法模型,利用深度学习的思想,通过训练,把对文本内容的处理简化为K维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似。其使用分布式表示(Distributed

representation)的字向量表示方式。基本思想:

通过训练将每个字映射成K维实数向量(K一般为模型中的超参数),通过字之间的距离(比如cosine相似度、欧氏距离等)来判断它们之间的语义相似度,其采用一个三层的神经网络,输入层-隐层-输出层。有个核心的技术是根据字频用Huffman编码,使得所有字频相似的字隐藏层激活的内容基本一致,出现频率越高的字,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度。

CBOW模型通过一个字的上下文(各H个字)预测当前字。具体来说,不考虑上下文的字输入顺序,CBOW是用上下文字的字向量的均值来预测当前字。CBOW的好处是对上下文字的分布在字向量上进行了平滑,去掉了噪声,因此在小数据集上很有效。当H=2时,CBOW模型如图2所示,算法步骤:

(1)随机生成一个大小为(字_size,嵌入_size)的嵌入矩阵(即所有字的字向量矩阵,每一个行对应一个字的向量);

(2)对于某一个字(中心字),从嵌入矩阵中提取其周边字的字向量;

(3)求周边字的字向量的均值向量;

(4)在该均值向量上使用logisticregression(逻辑回归)进行训练,softmax(Softmax函数,或称归一化指数函数,是逻辑函数的一种推广。Softmax函数实际上是有限项离散概率分布的梯度对数归一化)作为激活函数;

(5)期望logistic regression得到的概率向量可以与真实的概率向量(即中心字的one-hot编码向量)相匹配。

实施例三

基于实施例二的中文分词系统,所述字向量分类模块,将中文句子的字向量的字特征输入到BiLSTM网络中,得到每个字向量的各种词位置分类的概率。

较佳的,使用word2vec对所述字向量提取模块得到的中文句子的字向量进行字嵌入,使字向量的字特征维度增加(例如,使字向量的字特征维度增加为200);用字特征维度增加后的字向量的字特征输入到BiLSTM网络中,对中文句子的字向量进行分类,得到每个字向量的各种词位置分类的概率。

用字嵌入特征输入到BiLSTM网络的算法步骤:

(一)得到字嵌入后,用字嵌入序列(x1,x2,...,xn)作为BiLSTM各个时间步的输入,再将正向LSTM输出的隐状态序列与反向LSTM的在各个位置输出的隐状态进行按位置拼接得到完整的隐状态序列m为字向量的字特征维度。

在设置dropout(dropout,就是每次训练的时候,按照一定几率P随机丢弃一些feature或者Input,具体做法是把这一项feature设置成0,然后把剩下的没有丢弃的feature或者input按照1/P的倍率放大)后,接入一个线性层,将隐状态向量从m维映射到k维,k是标注集的标签数(比如可以是k=4,代表四种词位置分类),从而得到自动提取的句子特征,记作矩阵

可以把的每一维pij都视作将字xi分类到第j个标签的打分值,如果再对P进行Softmax(Softmax函数,或称归一化指数函数,是逻辑函数的一种推广,Softmax函数实际上是有限项离散概率分布的梯度对数归一化)的话,就相当于对各个位置独立进行k类分类。

LSTM算法全称为长短期记忆网络(Long Short Term Memory networks),最早由Sepp Hochreiter和Jürgen Schmidhuber于1997年提出,是一种特定形式的RNN(Recurrent neural network,循环神经网络),非常适合用于对时序数据的建模,如文本数据;BiLSTM是Bi-directional Long Short-Term Memory的缩写,是由前向LSTM与后向LSTM组合而成。两者在自然语言处理任务中都常被用来建模上下文信息。而RNN是一系列能够处理序列数据的神经网络的总称。使用LSTM模型可以更好的捕捉到较长距离的依赖关系。因为LSTM通过训练过程可以学到记忆哪些信息和遗忘哪些信息。利用LSTM对句子进行建模还存在一个问题:无法编码从后到前的信息。在更细粒度的分类时,如对于强程度的褒义、弱程度的褒义、中性、弱程度的贬义、强程度的贬义的五分类任务需要注意情感词、程度词、否定词之间的交互。举一个例子,“这个餐厅脏得不行,没有隔壁好”,这里的“不行”是对“脏”的程度的一种修饰,通过BiLSTM可以更好的捕捉双向的语义依赖。

实施例四

基于实施例三的中文分词系统,所述模型输出模块,通过对BiLSTM网络输出的隐藏层中加一个CRF层,对中文句子的每个字向量的各种词位置分类的概率根据上下文信息进行修订,得到中文句子的目标字向量模型。

较佳的,所述模型输出模块,对BiLSTM网络输出的隐藏层中加一个线性层,最后加一个CRF层,对中文句子的每个字向量的各种词位置分类的概率根据上下文信息进行修订,得到中文句子的目标字向量模型。

CRF层的参数是一个(k+2)×(k+2)的矩阵A,Aij表示的是从第i个标签到第j个标签的转移得分,进而在为一个位置进行标注的时候可以利用此前已经标注过的标签,之所以要加2是因为要为句子首部添加一个起始状态以及为句子尾部添加一个终止状态。如果记一个长度等于句子长度的标签序列y=(y1,y2,...,yn),那么模型对于句子x的标签等于y的打分为

可以看出整个序列的打分等于各个位置的打分之和,而每个位置的打分由两部分得到,一部分是由LSTM输出的pi决定,另一部分则由CRF的转移矩阵A决定。进而可以利用Softmax得到归一化后的概率:

模型训练时通过最大化对数似然函数,下式给出了对一个训练样本(x,yx)的对数似然:

logP(yx|x)=score(x,yx)-log(∑y′exp(score(x,yx)))

如:输入句子由120个字组成,每个字由100维的字向量表示,则模型对应的输入是(120,100),经过BiLSTM后隐层向量变为T1(120,128),其中128为模型中BiLSTM的输出维度。设分词任务的目标标签为B(Begin)、M(Middle)、E(End)、S(Single),则模型最终输出维度为(120,4)的向量。对于每个词对应的4个浮点值,分别表示对应BMES的概率,最后取概率大的标签作为预测label。通过大量的已标注数据和神经网络强大的非线性拟合能力,训练出分词模型。

用字嵌入特征输入到BiLSTM网络中,对中文文本的字向量进行分类,这样对各个位置进行标注时无法利用已经标注过的信息。

CRF((Conditional Random Field,CRF算法,中文名称条件随机场算法,外文名称conditional random field algorithm,是一种数学算法,结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型,在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果。条件随机场是一个典型的判别式模型,其联合概率可以写成若干势函数联乘的形式,其中最常用的是线性链条件随机场。若让x=(x1,x2,…xn)表示被观察的输入数据序列,y=(y1,y2,…yn)表示一个状态序列,在给定一个输入序列的情况下,线性链的CRF模型定义状态序列的联合条件概率为:

p(y|x)=exp{}(2-14)

Z(x)={}(2-15)

其中:Z是以观察序列x为条件的概率归一化因子;fj(yi-1,yi,x,i)是一个任意的特征函数;是每个特征函数的权值。

实施例四的中文分词系统,接入一个CRF层来进行标注,运用了字嵌入、BiLSTM和CRF结合的方式进行中文分词,充分结合利用了不同算法和神经网络模型的优点,并通过大量的已标注数据和模型不断迭代优化、依赖于神经网络强大的非线性拟合能力,学习出不错的模型,使得中文分词结果更加准确。该中文分词系统可应用于各种场景下的在线文本客服系统,也可用于基于语音的各种电话客服、机器人外呼系统,还可用于基于自然语言文本处理的其它各类应用场景,如文本纠错、合同校验等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1