基于句向量和卷积神经网络的文本聚类研究

2022-08-19 08:23贾君霞王会真
计算机工程与应用 2022年16期
关键词:特征向量特征提取语义

贾君霞,王会真,任 凯,康 文

1.兰州交通大学 电子与信息工程学院,兰州 730070

2.国电甘肃新能源有限公司,兰州 730070

随着互联网的快速发展,网络数据和信息资源日益增加。如何从大量文本中快速、高效地获取相关主题下的有用信息成为网络舆情的一项重要任务,文本聚类成为实现这一目标的重要方法之一。文本聚类需经过文本预处理、文本表示、聚类这三个基本操作。在预处理阶段,需要对原始数据分词,去除停用词。在文本表示阶段,对文本进行文本向量化、文本特征提取。最后通过聚类的方法得到有用信息。文本聚类过程重点是通过使用合适的方法进行文本表示,以提取文本的特征,然后通过聚类方法获取有用的信息。目前,文本表示主要有三种方法:基于向量空间文本表示模型,基于主题文本表示模型,基于神经网络的文本表示模型。

基于向量空间文本表示模型(vector space model,VSM)[1]将文本转化为空间向量中的一个向量,每个词对应一个维度,每一维的值就是每个词在向量中的权重,每一维的值通过所统计的词频来计算。从而忽略了上下文词语之间的语义关系,不会考虑不同文本中相同的词意义可能相同。

基于主题文本表示模型(latent Dirichlet allocation,LDA)[2]考虑词与词之间的语义关系,通过统计学习的方法,把文档划分成不同的主题。基于主题文本表示模型进行文本表示时,尽可能用最少的词语来表达每个主题的含义,而且力求主题的数目最少。通过主题文本表示模型得到的文本特征词向量比较稀疏,还会忽略词与词之间的排列顺序。

基于神经网络的文本表示模型:Bengio等人在2003年提出了一种含有三层神经网络结构的神经网络语言模型(neutral network language model,NNLM)[3]。首先,将预处理后的文本转化成词向量,得到的词向量不仅维度较低而且稠密;接着,选择一个向量空间,把词向量映射到这个空间中,词的语义与向量表示一一对应。Mikolov 等人在2013 年提出Word2vec 模型[4],利用深度学习的方法对文本进行训练,生成的词向量可以较好地表达出词语的含义,但忽略了上下文词语之间的顺序对文本的影响。Le等人于2014年在Word2vec的基础上,提出了Doc2vec模型[5]。Doc2vec模型包含文本语序信息,考虑了词语之间的语序对句子、文本的影响,使文本语义表达得更加准确。

目前,文本聚类主要使用基于神经网络的文本表示模型。孙邵颖等人在2018年针对文本聚类存在特征高维、数据稀疏等问题,提出一种基于词向量和深度学习的文本聚类方法[6]。杨俊峰等人在2019年提出一种基于Word2vec 模型和卷积神经网络(convolutional neural networks,CNN)的文本特征提取方法用于短文本聚类[7]。上述方法中的Word2vec 模型不能直接将文本向量化,如果需要将文本向量化,则需要先进行词语向量化,导致训练规模增大。另一方面,没有考虑到词语之间的顺序会不会改变句子、文本本身的含义。

针对现有的文本聚类模型存在文本向量稀疏,特征高维,忽略词语之间的先后顺序、语义等问题,本文提出一种基于Doc2vec 模型和CNN 的文本聚类方法。首先使用Doc2vec 模型训练文本数据,将文本向量化,得到句向量或文本向量;然后再将文本向量矩阵作为CNN模型的输入提取文本的深层语义特征;最后采用k-means算法进行聚类,得到有用信息。采用Doc2vec模型的好处在于得到的每个文本向量都结合了段落向量,更详细地表达了文本的含义。再结合CNN模型,提取更深层次的文本特征,使文本内容表达得更详细,聚类结果更准确。

1 文本聚类

1.1 Doc2vec模型

Mikolov 等人提出的Word2vec 模型在训练语言模型时,采用神经网络的思想。使用此模型在训练文本语料库的过程中,主要考虑上下文词语间的语义关系,在目标词前面一定数目的词语影响着目标词的出现,生成的词向量与原来的词一一对应。Word2vec 模型有CBOW(continuous bag of words)和Skip-Gram 两种结构。Word2vec模型无法考虑词与词之间的顺序对文本语义的影响以及无法直接将文本向量化,使得训练样本数据过多。Le 等人基于Word2vec 模型做了改进,提出了Doc2vec模型。两者的区别在于:后者在前者的基础上,增加了段落向量,进而可以结合上下文词语训练文本,得到句向量或文本向量[8-9]。

Doc2vec模型有DM(distributed memory)和DBOW(distributed bag of words)两种模型。其中,DM 模型与Word2vec 模型的CBOW 模型相对应,都是通过上下文预测当前词的概率。DBOW模型与Word2vec模型的Skip-Gram 模型对应,两者都是根据现有的词语来对上下文的概率做出预测[10]。本文采用Doc2vec 模型中的DM 模型,如图1 所示。DM 模型和DBOW 模型的区别在于DM模型根据给定上下文中的模型来预测目标词,DBOW模型根据目标词来预测上下文概率。

图1 DM模型Fig.1 DM model

1.2 卷积神经网络模型

卷积神经网络(CNN)是前馈神经网络,具有局部连接、权值共享及池化操作等特点[11],因此CNN被广泛应用于计算机视觉、自然语言处理等领域,主要包括输入层、卷积层、池化层、全连接层和输出层。图2展示了卷积神经网络模型图。

图2 卷积神经网络模型图Fig.2 Convolutional neural network model diagram

在卷积神经网络中,输入层输入文本数据,卷积层进行局部特征提取。卷积层由多个卷积核组成,卷积核由每个元素组成,这些元素与权重系数、偏差量一一对应[12]。在卷积层进行局部特征提取后,池化层通过对文本特征向量的局部区域进行下采样操作,将最有用的特征信息保留下来,剔除特征提取过程中多余数据。池化是以相邻局部文本感知域的统计特性相似为依据而进行的相邻文本特征聚合统计的操作,该操作在尽可能保留有用数据的基础上降低了网络复杂度,减少了训练时间。

在卷积神经网络中,卷积层和池化层进行特征提取,全连接层对提取的特征进行非线性组合再输出。经过卷积层和池化层的操作之后,输入的文本向量已被转化成了高信息量、深层次的文本特征向量。全连接层本身不具有特征提取的能力,而是按照输出层的具体任务,有目的性地对深层文本特征向量矩阵进行映射,完成最终归一化的文本特征向量输出。

2 改进的文本聚类

文本聚类分为三个阶段:第一阶段是文本预处理;第二阶段是文本表示;第三阶段是聚类。文本表示是将文本转换成计算机可以处理的文本信息,主要包括文本向量化和特征提取,处理过程中会出现文本向量稀疏、特征高维等问题,导致提取的文本特征不够全面,不能表达文本的真正含义,影响聚类结果。因此,本文主要针对文本表示阶段做出改进,提出基于Doc2vec和CNN相结合的文本特征提取方法。与其他文本聚类方法相比,本文提出的文本聚类方法不是对文本数据直接进行聚类分析得到结果,而是先对文本数据进行向量化、文本特征提取和降维,然后再进行文本聚类分析。首先,充分考虑文档词排列顺序和语义,利用Doc2vec模型中的DM 模型把训练数据集中的文本转换成句向量;其次,为了解决特征维度高的问题,能够得到用于聚类的文本特征向量,利用CNN提取文本的深层语义特征,并进行文本特征降维处理;最后,将得到的包含深层语义特征的低维文本特征向量输入到聚类算法中得到文本聚类结果。本文改进的文本聚类总体框架如图3所示。

2.1 文本预处理

采用python 中的requests 库获取搜狗新闻数据,对得到的数据进行基本操作,为后面的实验做准备。数据的基本操作包括两部分:第一步,分词,将连续的文本划分成相互独立的词、词语。第二步,去除停用词,删除文本中“的,啊,比如”等无含义的词语。

2.2 Doc2vec-CNN文本表示

本文提出的基于Doc2vec 模型和CNN 的文本表示方法在进行文本表示时,首先使用Doc2vec 模型中的DM 模型训练文本数据,将文本向量化,得到句向量或文本向量;然后将文本向量矩阵作为CNN模型的输入,进一步提取文本语义特征。使用Doc2vec-CNN文本表示模型能够克服传统文本表示存在的矩阵稀疏性、维度爆炸、难以表达语义等问题。

2.2.1 文本向量化

本文采用Doc2vec 模型中的DM 模型训练文本,生成句向量或文本向量。首先输入段落ID和上下文的词语,并使用one-hot编码将其转化为向量,生成矩阵D和W。D中的句向量(paragraph vector)和W中的词向量(word vector)具有相同的维数,但表示两个不同的向量空间。然后将两者累加或拼接,作为预测Softmax 层的输入,也就是目标词语的概率[13]。使用DM模型训练文本生成的句向量和文本向量与词向量(Word2vec)相比,不仅考虑了词语之间的语序,而且直接将文本向量化,精简了训练样本。例如对于一个包含100个词语的文本,在把词向量的维度、文本向量的维度同时设为600的情况下,训练样本的规模由原来的100×600简化为1×600。

2.2.2 文本特征提取

本文采用CNN模型对文本进行特征提取。Doc2vec模型中的DM模型完成对语料库的训练后,得到一个由文本向量构成的文本向量矩阵,这个文本向量矩阵通过输入层输入到卷积神经网络,然后在卷积层进行局部特征提取。

卷积层中卷积核的大小,会影响文本特征提取,因此本文选取多个不同尺寸的卷积核来提取特征。为了使卷积核每次滑动过的长度刚好是一个句向量,将句向量的维度数看作是卷积核的宽度,其高度可根据需求设置成对应的值[14]。计算公式如式(1):

其中,用ωi、β分别表示卷积核的权重矩阵、偏置,激活函数用f代表,第i行到i+m-1 行的句向量矩阵用xi,i+m-1表示。

卷积神经网络模型的卷积层只提取文本向量矩阵的局部特征,而文本向量矩阵的深层次特征需要通过池化层进一步提取以及对向量矩阵进行降维。池化层在池化时,根据不同的需求选择不同的池化方式。目前主要有最大值池化和均值池化。本文采用最大值池化。首先,对卷积层生成的特征向量进行提取操作,得到一个最大值,用其表示最重要的文本特征,通过最大值池化获取一个标量。然后,对宽度、高度相同的卷积核进行卷积池化操作,得到对应的标量,构成窗口大小的特征向量。

全连接层将所有的特征向量相连,得到一个完整的最终的文本特征向量,即把所有窗口下的特征向量连接成一个文本特征向量。在经过CNN 模型训练后,文本与文本特征向量一一对应,经过输出层来输出文本特征向量,最后进行聚类分析。

2.3 聚类

本文采用k-means 聚类算法对Doc2vec-CNN 文本表示的文本特征向量进行聚类分析,获取有用的信息。相比于其他聚类算法,k-means 聚类算法简单且易收敛,在处理大规模的数据时,快速且高效。k-means 算法聚类分析的过程如图4所示。

图4 k-means聚类流程图Fig.4 k-means clustering flowchart

如图4 所示,判断文本数据属于某个主题(文本相似度)时,采用距离公式作为度量指标,通过计算文本和各主题之间的距离,将文本划分到对应的主题中。本文采用余弦相似度作为度量指标[15],其计算公式如式(2):

其中,φi(φ(i,1),φ(i,2),…,φ(i,n))表示文本向量。

3 实验结果与分析

3.1 实验数据

本文通过python的requests库爬取搜狗新闻数据作为实验数据。此实验数据共有50 000条文本数据,包含多种类别。数据预处理阶段通过python 的gensim 库中的jieba分词将连续的文本划分成相互独立的词、词语,接着去除停用词以及文本中无含义的词语。最后将其处理后的结果用一个文本文件保存,一个文档对应一行数据。训练预处理后的数据,本文采用Doc2vec-CNN文本表示模型,需要设定各部分的参数,设定结果如表1所示。

表1 Doc2vec模型参数Table 1 Doc2vec model parameters

3.2 评价指标

文本聚类结果的好坏,通常选取准确率、召回率和F-measure指标进行评估[16]。准确率用来判断聚类结果是否有效,在文中用字母A表示。召回率用来判断聚类的结果是否完整,在文中用字母B表示。F-measure 是综合评价准确率和召回率的指标。

F、A、B计算公式如下:

式中,Mi,j表示簇j中含有的类别i的数目,Mi表示这个类别i包含的文本数,Mj表示簇j中含有的全部文本类别的数目。

3.3 实验结果与分析

在使用k-means 聚类算法进行文本特征向量聚类分析时,选取k值不同,得到的结果不同。本文设计了不同k值对聚类结果影响的实验,选取k值为5,10,15,20。实验结果如图5所示,当k=10 时,聚类结果的准确率和F值最好,因此本文选取k=10 作为聚类的主题数。

图5 不同k 值的聚类结果Fig.5 Clustering results of different k values

本文设计两组实验:一组是关于Word2vec和Doc2vec模型的文本聚类对比实验,实验结果如表2 所示;另一组是基于CNN和VSM模型、LDA模型的文本聚类对比实验,实验结果如表3所示。这两组对比实验数据均采用本文通过python爬取的搜狗新闻数据,聚类算法采用k-means,对比实验硬件配置环境相同。

表2 Word2vec和Doc2vec模型的实验结果Table 2 Experimental results of Word2vec and Doc2vec models

表3 不同模型的实验结果对比Table 3 Comparison of experimental results of different models

通过表2 和表3 的实验结果可知,在进行文本向量化时选取Doc2vec 模型,其准确率和F值指标均高于Word2vec 模型。在进行文本特征提取时,选取CNN 模型,其准确率和F值指标高于VSM、LDA模型。因此,本文将Doc2vec模型与CNN模型相结合用于文本聚类。

为了进一步验证本文提出的Doc2vec+CNN文本表示模型是否有利于聚类,选取Doc2vec模型、Word2vec+CNN 模型、Doc2vec+LDA 模型进行对比实验。对比实验数据使用本文爬取的搜狗新闻数据,聚类算法采用kmeans聚类算法,选取k=10。实验结果如表4所示。

表4 不同模型的实验结果对比Table 4 Comparison of experimental results of different models

如表4 所示,从准确率、召回率、F值来看,本文提出的Doc2vec+CNN模型的聚类结果优于其他模型。由于Doc2vec模型没有忽略词和词之间的顺序、词和词之间的内容含义,可以直接对文本进行向量化,因此优于Word2vec模型。Doc2vec模型在训练文本时,会使得文本特征不完整,导致聚类结果的准确率较低。

Doc2vec+LDA 模型考虑了上下文之间的语义、语序关系以及文本的全局信息,但由于文本向量比较稀疏,使其准确率较低,仅为0.723。本文提出的Doc2vec+CNN模型较Doc2vec+LDA模型准确率提高了0.053,F值指标也提高了0.090。

Word2vec+CNN 模型虽然相对于Doc2vec 模型和Doc2vec+LDA 模型聚类结果较好,但是在文本向量化过程中,Word2vec+CNN会忽略文本上下文之间的语序关系,丢失部分上下文的语义信息。相比于Word2vec+CNN模型,本文提出的文本聚类准确率提高了0.043,达到了0.776;F值指标达到了0.780,提高了0.056。

4 结论

本文针对文本向量稀疏性,文本特征维度高,忽略上下文之间的语序、语义等问题,提出了一种基于句向量(Doc2vec)和卷积神经网络(CNN)的文本聚类模型。首先采用Doc2vec 模型中的DM 模型训练文本数据,将文本向量化,组成文本向量矩阵;然后再将文本向量矩阵作为CNN 模型的输入提取文本的深层语义特征;最后使用k-means 算法进行聚类,得到有用信息。本文提出的Doc2vec+CNN模型在爬取的搜狗新闻数据上进行实验,准确率达到了0.776,F值指标达到了0.780,相比其他文本聚类模型均有所提高。本文提出的文本聚类模型不仅考虑了上下文的语序关系,而且通过卷积神经网络还能提取文本包含的更深层次的文本特征,最后通过聚类算法分析获得的聚类效果更好。

猜你喜欢
特征向量特征提取语义
二年制职教本科线性代数课程的几何化教学设计——以特征值和特征向量为例
真实场景水下语义分割方法及数据集
克罗内克积的特征向量
语言与语义
空间目标的ISAR成像及轮廓特征提取
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于特征提取的绘本阅读机器人设计方案
一类三阶矩阵特征向量的特殊求法
基于Daubechies(dbN)的飞行器音频特征提取
EXCEL表格计算判断矩阵近似特征向量在AHP法检验上的应用