一种融合数据类别信息的文本特征提取方法转让专利

申请号 : CN201811178279.7

文献号 : CN109446519B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王博杨树森徐宗本

申请人 : 西安交通大学

摘要 :

本发明公开了一种融合数据类别信息的文本特征提取方法,该方法通过对数据进行清洗并训练词向量,将Seq2Seq自编码模型融入到LSTM分类模型,Seq2Seq和LSTM共用同一个Encoder,使得模型完成训练后,Encoder不仅可以利用到样本的类别信息,而且可以利用到文本自身的结构信息和语义信息,显著提高了Encoder面对未知类别文本的特征提取能力。

权利要求 :

1.一种融合数据类别信息的文本特征提取方法,其特征在于,包括以下步骤:

1)数据清洗;

对文本数据进行分词,去除特殊符号以及生僻字词;

2)文本预处理;

对步骤1)中分好的词语赋予ID,然后建立词语-ID词典;

3)词向量预处理;

利用步骤2)生成的词语-ID词典生成词语的one-hot表示,并设置词向量的长度L,随机初始化形状为N×L的矩阵,其中N为词典中词语的个数,该矩阵的每一行就是一个词向量;

设置滑动窗口大小,将窗口中间位置词语的one-hot向量作为目标输出,其他位置词语的one-hot向量与N×L矩阵相乘并求和后作为实际输出,滑动窗口遍历语料库,通过梯度下降法最小化实际输出和目标输出之间的损失,得到最终的词向量矩阵;

4)构建模型

首先建立LSTM分类模型,将一条文本看作是时间序列数据,LSTM的循环体会遍历该文本中的词语,每一个时刻的输入是该位置的词向量,当循环体处理完最后一个词语时,输出特征向量,然后将该特征向量作为Softmax分类器的输入,该文本的类别作为分类器的目标输入,用交叉熵衡量Softmax分类器的损失;

然后建立Seq2Seq模型,其中Encoder使用上述分类模型中的LSTM,Decoder使用另外一个LSTM模型,Encoder输出特征向量之后,将特征向量和上一时刻的状态向量作为Decoder每一时刻的输入,Decoder的每一时刻输出也是一个向量,将该向量作为Softmax的输入,当前时刻的目标输出是下一时刻词语的one-hot向量,也是用交叉熵衡量损失;

最后将LSTM分类模型的损失和Seq2Seq模型的损失做加权综合,作为模型的总体损失,通过优化方法最小化总体损失,得到Encoder作为最终的特征提取模型。

2.根据权利要求1所述的一种融合数据类别信息的文本特征提取方法,其特征在于,步骤2)的具体实现方法如下:设置文本的长度阈值L,如果数据集中文本长度大于L截断,否则用填充,然后利用词语-ID词典对文本进行数字编码,得到源文本编码和目标文本编码,两种编码的区别在于,目标文本编码中每条文本数据的最后填充,表示该条文本的结束,文本中如果出现词典中未出现的词语则用填充。

说明书 :

一种融合数据类别信息的文本特征提取方法

技术领域

[0001] 本发明属于自然语言处理领域,特别涉及一种融合数据类别信息的文本特征提取方法。

背景技术

[0002] 在自然语言处理领域里面,经常有文本分类或者文本聚类的任务,无论是文本分类还是文本聚类,都需要利用一定的方式将文本编码成向量,将文本编码成向量的过程称为文本特征提取。对于文本分类任务而言,分类模型根据数据的类别信息将文本编码成向量,使得不同类别的文本向量在空间中线性可分;对于文本聚类任务而言,聚类模型首先根据数据自身的结构信息将文本编码成向量,然后根据向量在空间中的分布状况进行聚类。
[0003] 在文本分类领域,目前最流行的模型是深度学习中的LSTM分类模型。LSTM是长短期记忆网络,专门用于处理时序数据。LSTM模型中存在一个循环体,该循环体会按时间顺序依次处理时序数据,根据每一个时刻的输入和当前模型的状态,给出当前时刻的输出。而循环体中的“门控结构”,会对当前时刻的输入信息和历史信息进行过滤,使得当前时刻的输出是最优的。当循环体处理完时序数据的最后一个时刻的数据时,则输出该时序数据的特征向量,将该向量作为Softmax分类器的输入,就可以根据类别信息去构造损失函数。通过优化方法最小化损失函数,能够训练出根据类别信息提取特征向量Encoder。
[0004] 在聚类领域,常见的聚类方法有很多,比如层次聚类、混合高斯聚类、密度聚类、流型聚类等等,具体使用哪一种方法需要根据数据自身的空间分布情况确定。文本聚类中关键的一步是将文本转化成合适的向量,即文本特征提取,特征提取的结果会直接影响最终的聚类效果。在特征提取模型里面,Auto-Encoder模型是非常流行的。该模型的输入和输出都是样本自身,模型中的Encoder将样本编码成特征向量,Decoder将特征向量尽可能解码成样本,通过优化解码后的样本与原始样本的之间的损失,得到理想的Encoder,从而对数据进行特征提取。Seq2Seq模型在文本翻译、自动摘要等领域有着举足轻重的地位,Seq2Seq中的Encoder和Decoder都是LSTM模型,如果Seq2Seq的模型输入和输出都是数据自身的话,该模型也属于Auto-Encoder模型。
[0005] 当数据的类别信息已知时,分类模型的特征提取能力优于Auto-Encoder,因为分类模型是有监督模型,可以根据类别信息进行特征提取。而Auto-Encoder是自监督模型,只能根据数据自身的结构特性进行特征提取,没有利用类别信息,因此精度会比较差。但是分类模型只能对旧类别(训练集中出现过的类别)数据进行有效的特征提取,对新类别(训练集中未出现的类别)数据的特征提取能力非常差。而在实际应用中往往会遇到新类别数据,此时分类模型就难以满足要求,这也是当下诸多分类模型的瓶颈,也是机器学习、人工智能发展的一大阻碍。

发明内容

[0006] 本发明的目的在于提升分类模型对于新类别数据的特征提取能力,提供一种融合数据类别信息的文本特征提取方法,该方法能够有效对新类别文本数据进行特征提取,其通过将分类模型和自编码模型结合在一起,在传统LSTM分类模型的基础上,融入Seq2Seq自编码模型,使得模型可以同时根据数据的类别信息和数据本身的结构信息对文本进行特征提取。该模型中的LSTM分类模型和Seq2Seq自编码模型共用一个Encoder,通过优化方法最小化分类模型和自编码模型的总损失,得到最终的Encoder。
[0007] 本发明采用如下技术方案来实现的:
[0008] 一种融合数据类别信息的文本特征提取方法,包括以下步骤:
[0009] 1)数据清洗;
[0010] 对文本数据进行分词,去除特殊符号以及生僻字词;
[0011] 2)文本预处理;
[0012] 对步骤1)中分好的词语赋予ID,然后建立词语-ID词典;
[0013] 3)词向量预处理;
[0014] 利用步骤1)生成的词语-ID词典生成词语的one-hot表示,并设置词向量的长度L,随机初始化形状为N×L的矩阵,其中N为词典中词语的个数,该矩阵的每一行就是一个词向量;设置滑动窗口大小,将窗口中间位置词语的one-hot向量作为目标输出,其他位置词语的one-hot向量与N×L矩阵相乘并求和后作为实际输出,滑动窗口遍历预料库,通过梯度下降法最小化实际输出和目标输出之间的损失,得到最终的词向量矩阵;
[0015] 4)构建模型
[0016] 首先建立LSTM分类模型,将一条文本看作是时间序列数据,LSTM的循环体会遍历该文本中的词语,每一个时刻的输入是该位置的词向量,当循环体处理完最后一个词语时,输出特征向量,然后将该特征向量作为Softmax分类器的输入,该文本的类别作为分类器的目标输入,用交叉熵衡量Softmax分类器的损失;
[0017] 然后建立Seq2Seq模型,其中Encoder使用上述分类模型中的LSTM,Decoder使用另外一个LSTM模型,Encoder输出特征向量之后,将特征向量和上一时刻的状态向量作为Decoder每一时刻的输入,Decoder的每一时刻输出也是一个向量,将该向量作为Softmax的输入,当前时刻的目标输出是下一时刻词语的one-hot向量,也是用交叉熵衡量损失;
[0018] 最后将LSTM分类模型的损失和Seq2Seq模型的损失做加权综合,作为模型的总体损失,通过优化方法最小化总体损失,得到Encoder作为最终的特征提取模型。
[0019] 本发明进一步的改进在于,步骤2)的具体实现方法如下:
[0020] 设置文本的长度阈值L,如果数据集中文本长度大于L截断,否则用填充,然后利用词语-ID词典对文本进行数字编码,得到源文本编码和目标文本编码,两种编码的区别在于,目标文本编码中每条文本数据的最后填充,表示该条文本的结束,文本中如果出现词典中未出现的词语则用填充。
[0021] 本发明具有如下有益的技术效果:
[0022] 本发明通过在LSTM分类模型的基础上,融合了Seq2Seq自编码模型,使得模型在对文本数据进行编码时不仅利用了数据的类别信息,而且利用了数据自身的结构信息,使得模型提高了对新类别数据的特征提取能力,也增强了模型的泛化能力。

附图说明

[0023] 图1为本发明的模型结构图;
[0024] 图2为本发明和原始LSTM分类模型的特征提取效果对比图;其中,图2(a)是融合Seq2Seq的LSTM分类模型对测试集进行特征提取的情况,图2(b)是传统的LSTM分类模型对测试集进行特征提取的情况。
[0025] 图3为本发明和原始LSTM分类模型在训练集和测试集的rand指数对比图,其中,图3(a)是两种方法在训练集上的表现,图3(b)是两种方法在测试集上的表现。

具体实施方式

[0026] 下面结合附图,对本发明的具体实施方式进行详细阐述,但本发明不限于该实施例。为了使公众对本发明有彻底的了解,在以下本发明优选实例中详细说明具体的细节,数据采用HDFS运行日志。
[0027] Step1:将日志数据中的大写字母改成小写,用空格替换掉标点符号以及特殊符号,最后根据空格完成分词;
[0028] Step2:对Step1中分好的词语赋予ID(比如:1,2,3…),然后建立词语-ID词典。设日志最多包含30个单词,如果单词过多则需要截断,如果不够则用填充。然后利用词语-ID词典对日志进行数字编码,得到源日志编码和目标日志编码,两种编码的区别在于,目标日志编码中每条日志的最后需要填充,表示该条日志的结束。日志中如果出现词典中未出现的词语则用填充。
[0029] Step3:使用单层无激活函数的神经网络训练词向量,设滑动窗口大小为5,将窗口中间位置词语的one-hot向量作为神经网络的目标输出,其他位置词语的one-hot向量作为神经网络的输入,通过梯度下降法优化实际输出和目标输出之间的损失。滑动窗口遍历语料库,训练50轮停止,神经网络中的权重矩阵即为词向量矩阵。
[0030] Step4:建立融合Seq2Seq的LSTM分类模型,将该分类模型的Softmax层去掉之后作为日志特征提取的Encoder。具体步骤包括三步:
[0031] Step4.1:建立LSTM分类模型,循环体每一时刻的输入为日志的词向量,循环体的最终输出为该日志的特征向量,将该特征向量作为Softmax分类器的输入,该日志的类别信息作为Softmax分类器的输入,构造交叉熵损失Loss_CrossEntopy。
[0032] Step4.2:建立Seq2Seq自编码模型,Encoder和Decoder均采用LSTM模型,其中Encoder与step4.1的分类模型共享同一个LSTM模型。Decoder里面,当前时刻的输入为该日志的特征向量和上一时刻的状态向量,当前时刻的输出作为Softmax分类器的输入,Softmax分类器的目标输出是下一时刻的单词的one-hot向量,最后一个时刻的目标输出是对应的one-hot向量。将Decoder中循环体遍历日志生成的交叉熵损失求平均,构造损失Loss_Seq2Seq。
[0033] Step4.3:设置权重w,则模型总损失Loss_Total=w×Loss_CrossEntropy+(1-w)×Loss_Seq2Seq。使用优化方法最小化总损失,得到Encoder作为最终的特征提取模型。
[0034] 【实验结果】
[0035] 此次实验设置每条日志的特征向量长度为2,便于画图进行直观对比。训练集中日志类别为7类,测试集中日志种类为10类。最后,对测试集的特征提取结果利用混合高斯模型进行聚类,计算聚类结果和真实标签的吻合程度。实验将传统LSTM分类模型与本发明(融合Seq2Seq的LSTM分类模型)进行对比,画图展示两者对测试集进行特征提取的情况,并且对特征向量使用混合高斯模型聚类,用rand指数对聚类结果进行评价。
[0036] 图2(a)是传统的LSTM分类模型对测试集进行特征提取的情况,图2(b)是融合Seq2Seq的LSTM分类模型对测试集进行特征提取的情况,图片中方框内部的数据点为已知类别日志,圆框内部的数据点为新类别日志。图2(a)中有两处(左上角)方框和圆框交织在一起,有一处(右边)同一个新类数据被分成了两部分,且与已知类别数据的位置非常接近,说明传统的LSTM分类模型对新类别数据特征提取的能力很差。图2(b)中方框和圆框没有重叠的部分,已知类别日志和新类别日志在空间中分散开来,说明融合Seq2Seq的LSTM分类模型和传统方法相比,对新类别数据进行特征提取的能力有了显著的提升。
[0037] 图3是利用混合高斯模型对两种方法提取的特征向量聚类后rand指数对比,其中图3(a)是两种方法在训练集上的表现,图3(b)是两种方法在测试集上的表现。从图中可以看到,两种方法在训练集上的rand指数为1,说明两者都可以很好地对训练集进行特征提取。测试集中本发明的rand指数接近1,而传统方法的rand指数不到0.9,说明相对于传统方法,本发明可以显著提升模型对未知类别日志进行编码的能力
[0038] 以上,仅为本发明的较佳实施例,并非仅限于本发明的实施范围,凡依本发明专利范围的内容所做的等效变化和修饰,都应为本发明的技术范畴。