文本分类中基于单词表示的全局向量模型和隐含狄利克雷分布的文本表示改进方法
2021-11-10陈可嘉
陈可嘉, 刘 惠
(福州大学经济与管理学院, 福州 350116)
文本分类作为信息检索、自然语言处理、文本挖掘等领域的核心技术,近年来得到广泛的关注和应用[1]。文本是非结构化数据,需要转换为结构化的数值数据进行分类处理[2],因此,文本表示是文本分类工作中的核心环节。词袋(bag-of-word,BOW)模型是应用最为广泛的文本离散表示方法,包括one-hot、TF-IDF、n-gram,但存在着向量维度过高、数据稀疏以及忽视字词间的语义关系等问题,比如在BOW模型下,“武松打老虎”与“老虎打武松”视为一样的语句。分布式表示中,Word2vec模型基于词语的上下文分布信息将词语转化为低维度的实数向量,相似的词将被映射到向量空间中相近的位置,包括连续词袋(continuous bag-of-words,CBOW)、Skip-gram两种方法,能够解决BOW模型“稀疏性”的问题。然而Word2vec只考虑到了词的局部信息,没有度量词与局部窗口外词的关联,依然存在“语义丢失”的问题。单词表示的全局向量(global vectors for word representation,GloVe)模型是一种基于词共现矩阵理论的词向量模型,该模型突破了Word2vec模型以及潜语义分析(latent semantic analysis,LSA)方法在词汇类比方面表现不佳的缺点,将上下文窗口信息和整体词汇共现的统计信息相结合训练词向量,取得较好的效果[3]。因此,针对文本表示中存在的“稀疏性”“维度灾难”“语义丢失”的问题,现提出一种基于GloVe模型和隐含狄利克雷分布(latent Dirichlet allocation,LDA)主题模型的文本表示改进方法。
针对文本表示方法的改进主要包括两大模块的内容,一是基于传统的文本表示方法改进[4-5],二是基于深度学习的文本表示方法改进[6]。
Dourado等[7]提出一种基于图的文本表示方法,该方法通过对术语邻近性以及术语顺序进行编码,将文本表示为一个向量空间;宋岩等[8]提出基于层次特征提取的文本分类方法,采用神经网络模型进行建模,得到文本的全面特征对文本进行表示;Arruda等[9]提出基于段落的文本表示方法,通过对文本的句法特征进行捕捉,基于文本段落之间的相似性将文本表示为词语共现网络;Jiang等[10]结合全局文本和局部上下文信息构建了基于主题的CBOW的表示模型,该模型融合深度神经网络、主题信息以及词序信息,以此提出基于加权池的文本表示方法;Li等[11]针对文本语义的模糊性和反映信息局限性的问题,结合外部知识库和神经网络对词向量进行训练,得到基于文本概念信息和语义信息的文本表示;薛涛等[12]结合词义消歧对卷积神经网络进行改进,采用双向长短时记忆网络得到文档特征图,通过卷积神经网络进行文本表示。已有的相关研究中,基于传统的文本表示方法改进主要包括对词袋模型的优化以及对统计语言模型的改进[13],基于深度学习的文本表示方法则主要围绕对神经网络语言模型的优化进行[14-15],这些方法在一定程度上忽视了文本间的语义关系,未能解决文本表示方法中的“语义丢失”问题。
LDA是一种概率生成模型,相比传统的向量空间模型(vector space model,VSM),LDA主题模型能够在概率信息的基础上对文本进行建模,近年来得到广泛关注。冯国明等[16]利用LDA构建段落向量,得到文本的矩阵表示,在实现文本低维分布式表示的基础上提取更多语义信息;牛硕硕等[17]提出零空间线性判别分析(null space linear discriminant analysis,NLDA)文本分类算法,将神经网络应用在LDA拟合参数的计算过程中,通过拟合单词-主题概率分布进行文本分类;唐焕玲等[18]结合主题-类别概率分布参数,对主题-类别包含的语义关系进行分析,提出有监督主题模型的SLDA-TC分类方法;聂维民等[19]首先通过Word2Vec得到文本词向量,再利用LDA主题模型获取主题向量,最后结合字、词以及主题特征向量实现文本表示。
对现有相关研究进行归纳发现,基于词向量的文本表示方法虽然能够在一定程度上考虑文本的上下文语义关系,相比BOW模型以及基于语义特征的文本表示更具有优越性,然而维度过高、语义丢失以及稀疏性的问题依然存在,文本表示的准确性以及应用于文本分类任务中的性能仍然有待提升。LDA主题模型在文本分类应用中较为广泛,能够挖掘文本中的潜在语义结构,在文本分类领域中表现较好。因此,现将GloVe模型和LDA主题模型相结合,提出改进的文本表示方法,构建基于语义层面的文本主题低维空间向量表示文本以提高文本分类的准确性。
2 基于GloVe和LDA的文本表示改进方法
2.1 方法流程架构描述
首先采用GloVe模型构建基于全局文本的词向量,通过LDA主题模型生成文本集的隐含主题集合,并引入主题层面的文本数据表示,构建基于GloVe词向量和LDA主题的主题向量,计算得到每个主题的词向量表示,随后将文本词向量与隐含主题词向量之间的相似性作为输入对分类器进行训练,在此基础上实现文本分类。具体的文本表示改进方法流程架构如图1所示。
图1 方法流程架构Fig.1 Method flow architecture
2.2 文本预处理
采用Python下的Jieba分词工具的精确模式对文本数据集进行中文分词处理,删除标点符号和数字后,使用哈尔滨工业大学停用词表进行停用词过滤处理,再将分词结果中无实际含义的单个字全部删除。将文本预处理后的结果分别作为GloVe模型和LDA主题模型的输入。
2.3 基于GloVe模型构建词向量
设X为词语的共现矩阵,Xi为以词i为中心的上下文窗口内的共现次数,V为词典维度,Xi,j为训练样本集中词i与词j在给定的同一个窗口中共同出现的次数。则构造的GloVe共现矩阵模型为
(1)
Pi,k表示词k出现在词i给定的同一个窗口内的概率,计算公式为
(2)
(3)
Ri,j,k为词i、j、k之间的关系,当Ri,j,k值很大时,表明词j与k不相关,词i与k相关;当Ri,j,k值很小时,表明词j与k相关,词i与k不相关;当Ri,j,k值趋近1时,表明词i与k相关,词j与k相关,也有可能是词i与k不相关,词j与k不相关这种情况。Ri,j,k和初始的概率值相对比,在划分相关词和不相关词上具有更佳的效果,以及针对两个相关词可以更好地识别。
GloVe模型主要是建立函数g(vi,vj,vk),使得该函数的极大比率值逼近Pi,k/Pj,k,将词向量vi、vj、vk代入函数g中求得Ri,j,k,如果得到的结果与Pi,k/Pj,k具有相类似的规律,可以表明词向量和共现矩阵一致性较好。
对函数进行变换后得到相应的损失函数,考虑到可能存在某些噪声词在训练过程中会被赋予一定的权重,为了减少这一现象的出现,在建立函数时添加权重项f(Xi,j),得到的损失函数为
(4)
式(4)中:Xi,j为词i和j在窗口内的共现的频数;viT为词i为上下文时的词向量vi的转置;vj为词j作为窗口中心词时的词向量表示;bi和bj为偏差项。GloVe模型中权重函数f(x)为
(5)
式(5)中:α值为经验值0.75;xmax的取值需要结合语料库大小加以判断。
2.4 基于LDA主题模型生成隐含主题
模型假设某一篇文章假如归属于某一主题,那么这篇文章所有的单词都与该主题有关,以及在该模型中,不同文档间的关联可以借助主题间潜在的语义信息得以表示。假设词表长度为L,其中存在的任意L维向量(1,0,0,…,0,0)为某个词,N个词组成的文本d表示为d=(w1,w2,…,wN)。如果某一文本集D中有M篇文本,将其记为D=(d1,d2,…,dM)。将预处理后的文本集作为LDA主题模型的输入进行文本的隐含主题分析,训练生成K个隐含主题Zi,i=1,2,…,K,并在每个主题下生成了n个相应的主题词语,同时得到每个词语对应的概率值P=(P1,P2,…,Pn)。
在对文本集进行LDA主题模型训练时,为了达到更好的训练效果,使得到的主题更具有解释性,需要确定最佳生成主题数。困惑度(perplexity)可以对概率模型推测样本的能力进行评估,通过计算LDA主题模型的困惑度,能够在一定程度上判断模型的表示能力。困惑度越低,模型推测样本的能力越高。Perplexity的计算公式为
(6)
式(6)中:Dtext为数据集中的测试样本,其文本数量为M;Nd为第d篇文本中词语的个数;p(w)为测试集中每个词语出现的概率,计算公式为p(w)=p(z|d)p(w|z),其中p(z|d)为在一个文档中的每个主题发生的概率,p(w|z)为词典中的每一个词在某一个主题下发生的概率。
2.5 文本向量表示
词向量的训练过程是将非结构化的文本数据表示为结构化的数值数据的过程,将文本数据转换为向量表示有利于计算机进行处理。采用GloVe模型基于全局文本进行词向量的构建,得到相应的词向量集合V={v(w1),v(w2),…,v(wN)}。
由于在GloVe模型训练中得到词向量是在词语粒度上的文本数据表示,为实现文本分类,需要在文本粒度上构建文本的数据表示。因此,在GloVe模型训练得到的词向量基础上,采用求和取平均的方法将M篇新闻文本分别表示为向量形式,文本向量Vd的计算公式为
(7)
2.6 主题向量表示
Vt=wt1v1+wt2v2+…+wtivi
(8)
2.7 相似度计算
(9)
2.8 KNN文本分类器
K-近邻(k-nearest neighbor,KNN)分类器的核心思想是对k个距离最近的文本分别进行权值计算,最后将其归类到权值最大的标签下。将已标注类别标签的训练集与计算得到的相似度分布作为文本分类器的输入,进行训练后得到KNN分类模型,最后使用测试集实现文本分类并进行实验结果评价。
3 实验设计及结果分析
3.1 实验环境和实验数据集
为了验证提出的文本表示改进方法的有效性,设计实验完成该方法在文本分类上的性能测试。实验硬件平台基于Windows10操作系统,内存为8 GB。算法部分基于Python3.7平台编写,使用的Python模块包括自然语言处理库:Gensim3.8.1;机器学习库:Sklearn0.21.2;数学计算库:Numpy1.16.4。其中GloVe模型的词向量训练在Linux虚拟机环境下实现,系统编号为Ubuntu-18.04。
采用公开数据集THUCNews进行文本分类实验。选取数据集中的68 578篇新闻文本,其类别和数量分布如表1所示。将实验数据集划分为训练集和测试集,分别占80%和20%。
3.2 实验参数设置
首先采用Python的Jieba分词工具对文本数据集进行中文分词处理,删除标点符号和数字后,使用哈尔滨工业大学停用词表进行停用词过滤,再将分词结果中无实际含义的单个字全部删除。基于GloVe模型的词向量训练使用GloVe-1.2,设置词向量维数初始值为经验值100,调整词向量维数发现,当设置值超过100时,对实验结果影响极小,因此将维数设置为100。得到部分词向量如图表2所示。
采用Gensim库中自带的LDA主题模型函数训练生成文本的潜在主题以及相应的概率信息。采用Gibbs抽样方法得到LDA模型参数的近似估计,将狄利克雷函数的先验参数α和β设置为默认值。通过计算在不同主题数下的LDA主题模型的困惑度值,得到如图2所示的折线图。
从图2中可知,当主题数由50逐渐增加到250时,困惑度则从1 356.43下降到780.98,这一阶段模型的困惑度在不断减小,当主题数设置为300时,困惑度开始上升,因此,当主题数为250时,模型困惑度值达到最低。困惑度能够衡量训练得到的LDA主题模型推测样本能力的好坏程度,模型计算得到的困惑度越低,说明训练出的LDA主题模型具有更好的解释性,能够更好地对样本数据进行表示,此时设置的主题数为最佳主题数。因此在进行文本集的LDA主题模型训练过程中,将主题个数K设置为250。得到部分主题词如表3所示。
表1 THUCNews数据集文本类别与数量分布
表2 词向量文件示例
图2 不同主题数下的困惑度值Fig.2 Perplexity values under different topics
表3 文本主题词示例
3.3 评价策略
采用精确率(precision,P)、召回率(recall,R)和(F1-score,F1值)评价指标对提出的文本分类方法进行测试和结果评价。精确率P表示实验结果中被准确归类的样本数与预测为该类别的总样本数之间的比值,将某一类别c上的P定义为
(10)
式(10)中:NTPC为在类别c下分类正确的样本数量;NPC为被预测为类别c的样本数量。
召回率R表示实验结果中被准确归类的样本数与该类别的总样本数的之间的比值,将某一类别c上的R定义为
(11)
式(11)中:NC为实际属于类别c的总样本数量。
为了评价分类效果,基于两种评价指标引入调和平均数F1值。在某一类别c上的F1值定义为
(12)
3.4 文本分类实验
采用提出的基于GloVe和LDA的文本表示改进方法对实验文本进行文本表示,将其应用于实验数据集的文本分类任务中测试分类效果,得到14个类别的评价结果以及3个评价指标的均值。实验结果如表4所示。
表4 分类结果评价
从表4中可以看出,提出的文本表示改进方法在14个类别下的3个评价指标都表现较好,精确率都在83%以上,召回率在82%以上,F1在85%以上,其中精确率、召回率以及F1的均值分别达到91.28%、91.33%、91.27%。14个类别中精确率达到90%以上的有9个,分别是彩票、股票、家居、教育、时尚、体育、星座、游戏、娱乐,其中最高是类别彩票,精确率达到97.63%。实验结果显示,提出的基于GloVe模型和LDA主题模型的文本表示改进方法能够适应不同领域的文本,在不同领域文本下的文本分类测试都表现较为良好。
3.5 对比实验
为了进一步验证提出的文本表示改进方法的有效性,设计相应的对比实验进行验证。选取LDA、Word2vec和GloVe3种文本表示方法,以及Word2vec和LDA相结合的方法进行对比实验测试。其中LDA主题模型的训练参数都设置为初始默认值,主题数则都设置为250,Word2vec模型的词向量维数设置值和GloVe 模型保持一致,设置为100。计算3个评价指标的均值进行对比,结果如表5所示。
表5 方法对比评价
从表5中可以看出,单一的LDA主题模型文本表示方法的文本分类效果最差,加入Word2vec模型后的分类效果有所提升,在精确率、召回率和F1上分别提升了2.93%、2.78%、2.97%,显示词向量在文本表示中的重要地位。LDA主题模型虽然能够结合语义对文本进行表示,但是在模型训练中存在维度过高的问题,因此比单一的Word2vec模型和GloVe模型效果更差。提出的基于GloVe和LDA的文本表示改进方法在精确率、召回率和F1上相比基于LDA的方法分别提升了11.43%、11.56%、11.68%,与基于Word2vec和LDA的文本表示方法相比分别提升了8.5%、8.78%、8.71%。这是因为GloVe模型能够解决传统BOW模型及Word2vec模型在文本表示中显示出的数据稀疏、语义缺失的问题,同时提出的文本表示改进方法中,基于文本层面的向量表示和基于主题层面的向量表示能够充分利用LDA主题模型训练得到的主题词及概率分布,通过计算相似度输入构建的文本分类器以实现文本分类,能够较好解决文本分类中的语义丢失问题,有效提升文本分类器的性能。
4 结论
充分利用GloVe模型训练词向量的优势,结合LDA主题模型能够挖掘文本隐含主题和概率信息的优点,提出了一种基于GloVe和LDA的文本表示改进方法。从文本和主题两个层面进行考虑,构建基于全局文本信息的文本向量,并提出构建主题向量表示,在主题向量的计算中引入权重值,对选取的主题词语的概率权重值进行归一化处理,以此构建基于概率信息的主题向量,最后计算主题向量与文本向量之间的相似度,将其作为文本分类器输入。将改进的文本表示方法应用于文本分类测试实验以及对比实验中,结果表明,相比LDA、Word2vec+LDA、以及单一的Word2vec和GloVe的文本表示方法,基于GloVe和LDA的文本表示改进方法能够有效提升文本分类器的性能,能够较好解决文本分类中的稀疏性、维度灾难、语义丢失问题。在接下来的工作中,将考虑结合神经网络算法进行进一步的优化。