APP下载

基于密度Canopy的评论文本主题识别方法

2023-11-09詹世源雷晓雨杨雨宽陈伯轩刘格格皇甫佳悦

河北科技大学学报 2023年5期
关键词:文档语义聚类

刘 滨 ,詹世源,刘 宇,雷晓雨,杨雨宽,陈伯轩,刘格格,高 歆,皇甫佳悦,陈 莉

(1.河北科技大学经济管理学院,河北石家庄 050018;2.河北科技大学大数据与社会计算研究中心,河北石家庄 050018;3.河北政法职业学院图书馆,河北石家庄 050061;4.电子科技大学格拉斯哥学院,四川成都 610000;5.南京警察学院信息技术学院,江苏南京 210000;6.中国人民解放军空军预警学院,湖北武汉 430019)

评论文本泛在于文化、演艺、消费等诸多平台,利用自然语言处理领域的主题模型,可以挖掘出各类意见或观点,辅以数据可视化技术[1-2],帮助产品或服务提供方准确识别社会反馈并优化品质。LDA[3](latent dirichlet allocation)、pLSA[4](probabilistic latent semantic analysis)等主题模型通常采用Gibbs采样或变分推断等算法,从高维稀疏的文本特征空间中挖掘潜在主题信息[5]。然而,评论文本通常长度短、语义稀疏、情感词多且用词较为随意[6],致使LDA和pLSA的效果并不理想,出现模型泛化能力弱、主题词可解释性差等问题。针对短文本特征空间高维稀疏的特征,研究人员提出了BTM[7](biterm topic model)和DMM[8](dirichlet multinomial mixture model)等模型。BTM通过在短文本集合中构建词对,缓解了稀疏性问题;而DMM模型假设每一篇短文本只有一个主题,且一篇文本中所有词共享一个主题,使其适用于短文本处理[9]。然而,由于评论文本中词汇共现信息不足,并且上述2个模型仍然以概率计算为核心,导致出现主题识别不准确、缺乏深层语义理解等问题。为此,阮光册等[10]将深度学习模型与LDA主题模型相结合,提出融合Sentence-BERT和LDA的评论文本主题识别(SBERT-LDA)方法,取得了较好效果。然而,由于该方法使用K-means对特征融合后的向量进行聚类,且将LDA的主题数作为k值,因而存在可解释性较差、主题一致性较低等问题;此外,由于K-means算法随机选择初始聚类中心,因而容易陷入局部最优解的问题。为此,本文提出基于密度Canopy的SBERT-LDA优化方法(SBERT-LDA-DC),即采用基于密度Canopy的改进K-means算法进行向量聚类,并通过实验证明其效果。

1 相关研究

评论文本主题识别是指对互联网和在线社交媒体上的评论文本数据,通过自然语言处理技术,从文本中提取关键信息并推断出评论的主题[11]。BLEI[12]认为主题模型是一种统计方法,通过分析原始文本的词语来发现贯穿其中的主题以及这些主题如何联系,帮助人们理解文本文档中的潜在主题。主题模型最早的代表为pLSA,随后LDA主题模型对pLSA模型进行了贝叶斯改进,假设文档中主题的先验分布和主题中词的先验分布都服从Dirichlet分布。然而,网络评论文本具有数量多、噪声大、文本规范性不高、长度短等特点,导致pLSA和LDA模型在短文本处理方面效果不佳。研究人员在LDA基础上,分别从参数推断方式、模型假设、主题数量等角度提出了改进措施。BTM模型通过将2个词语结合起来,组成词对,建立了全局词共现关系;DMM模型假设每个文本只包含一个潜在主题。这2种模型在一定程度上克服了短文本词汇特征的稀疏问题,然而社交网络短文本中的词汇共现信息匮乏,DMM和BTM在进行主题推断时,仅能分析语料本身提供的信息,效果并不理想。LDA在主题识别过程中无法考虑时间因素,而有的文本数据会随着时间推移发生动态变化。例如关于某个热点话题的讨论,为了能够对不同时间阶段的文本主题进行追踪,研究人员在LDA基础上对时间维度进行拓展,具有代表性的是DTM[13](dynamic topic models)模型和TOT[14](topic over time)模型,这些模型能够揭示主题演变过程,适合对新兴主题生命周期特征进行动态分析。

深度学习作为机器学习领域的一个研究热点,近年来在自然语言处理任务中取得了令人瞩目的效果[15]。主题建模主要利用概率主题模型进行多文档全局文本语义分析,这种方法需要综合考虑各个文档之间的语义关系,目前大多数采用的方案仍然是概率主题模型。为了解决文本词汇共现信息不丰富或领域知识匮乏等问题,研究人员在传统概率主题模型的基础上,与先验知识相结合,包括领域知识、词向量等,取得了不错的效果,其中比较具有代表性的就是将深度学习模型与LDA主题模型相结合进行文本主题识别。杨恒等[16]选择人工智能领域的专利数据作为研究对象,通过使用Word2Vec扩展文本语料库,进一步挖掘文本的语义知识,增强LDA主题模型的效果。颜端武等[17]利用新浪微博发布的数据,使用LDA文档-主题分布特征和加权Word2Vec词向量特征,构建微博短文本的融合特征,通过K-means算法对这些特征进行主题聚类。ZHOU等[18]提出了基于BERT-LDA联合嵌入的主题聚类模型,该模型同时考虑上下文语义和主题信息,用于对财经新闻进行主题特征分析。ZHAO等[19]提出一种结合Word2Vec、基于主题的TF-IDF算法和改进的卷积神经网络方法WTL-CNN对网络新闻文本进行主题分类;国显达等[20]使用Word2Vec获取电商平台在线评论的词向量,并利用Gaussian LDA模型获得评论的主题分布,再利用主题分布计算评论的相似度矩阵,运用聚类算法将相似的评论聚类在一起实现主题发现。综上所述,将LDA与深度学习结合的主题模型,已经成为评论文本主题识别的重要应用技术,这些模型通过神经网络更有效地捕捉上下文信息和文本数据的语义信息。可以看出,融合多个模型虽可以弥补单个模型的不足,提升整体模型的性能,但LDA结合词嵌入Word2Vec的方法,将每个词转换为一个向量,忽略了上下文语境问题,而评论文本有时候一句话就代表着一个主题,因此容易造成主题语义连贯性不强的问题。李松繁等[21]采用BERT模型得到文本的句嵌入,在此基础上对农业领域前沿研究进行主题识别。但是由于BERT句向量空间的各向异性,导致生成的词向量在空间分布不均,而BERT模型生成的句向量是对词向量的平均池化,因此不适合用在文本相似度以及文本聚类等无监督任务场景。基于此,刘晋霞等[22]通过Sentence-BERT预训练模型获取句表征向量,采用二分K-means算法进行聚类,实现了对专利的前沿主题抽取。

文献[10]提出的SBERT-LDA方法,首先将Sentence-BERT得到的句子嵌入向量与LDA得到的概率主题向量进行拼接,然后使用自编码器将2个向量连接起来,得到评论文本的特征向量,最后采用K-means算法对特征向量聚类,挖掘旅游景点评论数据中的主题。该方法通过将Sentence-BERT和LDA相结合,提升了评论文本主题的语义性,取得了较好的实验效果。但是该方法由于在对文本特征向量聚类时使用的算法为K-means,因此存在聚类结果容易陷入局部最优解的缺陷[23],同时需要人工指定聚类个数,即该方法依据LDA主题建模中的主题数量确定算法中聚类簇的数量k,存在解释性较低的问题。针对上述问题,本文提出了基于密度Canopy的SBERT-LDA优化方法(SBERT-LDA-DC),采用基于密度Canopy的改进K-means算法,对潜在空间的向量进行聚类,得到用户评论文本的主题信息,从而避免了传统K-means算法因人工设定k值和随机初始化聚类中心引起的聚类结果不稳定以及容易陷入局部最优解的问题;同时,能够更好地理解评论文本的语义特征,对主题的划分也更加精准,具备更高的一致性。

2 基于密度Canopy的SBERT-LDA优化方法

2.1 主要模型

2.1.1 LDA主题概率向量

LDA是一种贝叶斯概率模型,包括文档、主题、词3层,通过分析文档集,能够得到文档集中每篇文档的主题概率分布并用其进行主题聚类或文本分类。LDA是一种典型的词袋模型,即每篇文档由一组词构成,词与词之间没有先后顺序关系。此外,LDA假设一篇文档可以包含多个主题,文档中的每个词都由某一个主题生成。给定一个文档集合,α是主题-文档分布的先验参数,它控制了每个文档中主题的分布情况。具体来说,α决定了每个文档包含哪些主题以及各个主题在文档中的比例。β是主题-词汇分布的先验参数,它控制了每个主题中词汇的分布情况,决定了每个主题包含哪些词汇以及各个词汇在主题中的比例。在文档层中,N为一篇文档中特征词数量,θ为文档对应的主题向量,在特征词层中w和z分别为指定的特征词与主题[24]。LDA主题模型联合概率表示如式(1)所示:

(1)

2.1.2 Sentence-BERT句子嵌入向量

Sentence-BERT是REIMERS等[25]基于BERT模型提出的预训练模型,是一种基于BERT的句子向量化方法,通过对比学习得到更好的句子向量表示。Sentence-BERT主要解决BERT语义相似度检索的巨大时间开销和其句子表征不适用于非监督任务如聚类、句子相似度计算等问题。与Word2Vec和BERT模型相比,Sentence-BERT更适用于文本相似度度量、文本聚类等任务。Sentence-BERT使用孪生网络结构,通过孪生网络获取句向量表示,即将句子对输入到参数共享的2个BERT模型中,在输出结果上增加池化操作来获得固定长度的句向量。Sentence-BERT的提出者在文中定义了3种池化策略:1)直接使用CLS位置输出的向量作为整句话的句向量;2)平均池化策略,将通过BERT模型得到的句子中所有的字向量的均值向量作为整句话的句向量;3)最大池化策略,将通过BERT模型得到的句子中所有的字向量对应位置提取最大值作为整句话的句向量,之后将2个句向量进行相似度比较,Sentence-BERT模型的目标函数是最大化正样本对的相似度,并最小化负样本对的相似度,其模型结构如图1所示。

图1 Sentence-BERT模型结构Fig.1 Sentence-BERT model structure

针对文本分类任务,Sentence-BERT模型的目标函数将句子嵌入u和v以及差向量|u-v|三者拼接起来,然后与可训练的权重向量Wt∈R3n×k相乘,见式(2):

o=softmax(Wt(u,v,|u-v|))。

(2)

最终优化目标通过最小化softmax的交叉熵损失函数实现,其中n是句子嵌入的维数,k是标签的数量。

2.1.3 特征向量拼接

LDA主题模型和Sentence-BERT模型在向量化表达评论文本时都有各自的侧重点,虽然LDA的主题分布向量可以全局描述文本特征,但受词袋模型的限制,无法挖掘深层语义信息。相比之下,Sentence-BERT模型可以完成对评论文本全局语义信息的特征提取,给2个向量分别赋予不同的权重,得到拼接向量:

V={w1*Vt;w2*Vs}。

(3)

式中:w1表示LDA的主题分布向量的权重值;Vt表示LDA的主题分布向量;w2表示Sentence-BERT句嵌入向量的权重值;Vs表示Sentence-BERT句嵌入向量,“;”表示向量连接符号。此时得到的拼接向量处于稀疏的高维空间,向量维度存在较高的相关性,因此使用自编码器将向量映射到一个低维的潜在空间,得到最终的融合特征向量。

2.1.4 基于密度Canopy的改进K-means算法

为了提高K-means算法的准确性和稳定性,解决最合适的簇数K和最佳初始种子的确定问题,ZHANG等[26]提出了一种基于密度Canopy的改进K-means算法。实验表明,与传统K-means算法、基于Canopy的K-means算法、半监督K-means++算法相比,基于密度Canopy的改进K-means算法取得了更好的聚类结果,并且其对噪声数据不敏感。该算法的具体流程如下:计算样本数据集的密度、簇内平均样本距离和簇间距离,选择密度最大采样点作为第一聚类中心,将密度簇从数据集中剔除,定义样本密度ρ(i)、簇内样本间平均距离a(i)的倒数、簇间距离的乘积作为权重乘积w,其他初始种子由剩余数据集中的最大权重乘积确定,直到数据集为空。

对于给定的数据集D={x1,x2,…,xn},数据集D中所有样本元素的平均距离定义如式(4)所示:

(4)

数据集D中样本元素i的密度定义如式(5)所示:

(5)

ρ(i)是满足其他样本到i点的距离小于MeanDis(D)条件的样本数。满足条件的样本形成一个簇,簇内样本间平均距离定义如式(6)所示:

(6)

簇间距离s(i)表示样本元素i与具有较高局部密度的另一个样本元素j之间的距离,簇间距离s(i)的定义如式(7)所示:

(7)

权重乘积w的定义如式(8)所示:

(8)

2.2 方法框架

图2给出了SBERT-LDA的方法流程图。首先对评论文本集进行数据预处理,使用Sentence-BERT生成句子的嵌入向量,通过LDA主题模型获得文本主题向量,再将2个向量进行连接,构建评论文本向量,最后使用K-means聚类方法提取类簇的主题。

本文提出的SBERT-LDA-DC方法流程如图3所示。对SBERT-LDA方法中的评论文本向量聚类方法进行改进,采用基于密度Canopy的改进K-means算法,解决了K-means算法需要指定聚类个数和随机选择初始聚类中心、结果容易陷入局部最优解的问题。

图3 SBERT-LDA-DC方法流程图Fig.3 Flowchart of the SBERT-LDA-DC method

SBERT-LDA-DC方法由5个部分组成:1)对评论文本数据集进行预处理,包括文本清洗,去掉非评论的噪声文本以及文本中无意义的重复词语,对清洗后的文本依次进行分词、去停用词处理;2)文本向量化,首先利用LDA模型对文本预处理后得到的语料库进行建模,得到每个评论文本的主题概率分布,即评论文本的主题向量,再通过Sentence-BERT模型得到评论文本的句嵌入向量;3)向量连接,对评论文本的主题向量和句子嵌入向量赋予不同权重,再将得到的向量连接;4)由于拼接向量处于稀疏的高维空间,向量维度存在较高的相关性,因此通过自编码器将拼接向量映射到低维潜在空间,得到重构之后的评论文本特征向量;5)通过基于密度Canopy的改进K-means算法对特征向量进行聚类,从聚类后的评论文本簇得到主题词。相较于传统K-means算法,基于密度Canopy的改进K-means算法可以自适应选择聚类中心点和聚类数目,解决K-means算法由于随机选取初始聚类中心容易陷入局部最优的问题。

3 实验过程及讨论

3.1 数据集

本研究从大麦网(www.damai.cn)爬取了舞剧《永不消逝的电波》的4 146条用户评价,时间跨度为2019年4月至2023年5月。首先在数据预处理环节筛选出1 852条字数在5~60之间的评论文本(通过查看评论发现,字数超过60时的大多数评论内容会涉及剧情的讨论,导致主题过于分散,因此将60设置为上限);然后对评论中出现的无意义重复文本,例如“好看好看好看”“震撼震撼震撼”等进行整合处理,即将多个重复词语替换为一个;再对评论文本中的同义词进行处理,如演员“朱洁静”在评论文本中的称谓表现为“朱姐”“朱老师”“朱洁静老师”等,本研究将其统一映射为“朱洁静”,得到的评论文本长度直方图如图4所示;最后使用Jieba分词工具包对评论文本进行分词,使用停用词表去除停用词,获得评论文本语料库。

图4 评论文本长度直方图Fig.4 Comment text length histogram

3.2 评论文本向量化

本文使用支持中文文本句嵌入构建的Sentence-BERT预训练模型“distiluse-base-multilingual-cased-v1”,该模型下载自HuggingFace网站。通过该模型获得评论文本的特征向量,其可以将句子映射到512维密集向量空间,使用该模型对1 852条评论文本进行向量化处理,可以得到1 852×512维度的矩阵向量。采用LDA获取评论文本的主题概率向量。为了获取最适宜的评论文本主题数量,本研究使用主题一致性指标CV(coherence value)来评估聚类效果的好坏。由图5可以看出,随着主题数的增加,一致性结果呈现波动上升的趋势。语义一致性在一定范围内最大时,确定的主题数挖掘出的主题可以较好地表征数据集的主题。根据计算结果,最优主题数分别为6,10,12,14和17个,由于评论文本数据集的文本数量较小,因此当主题数为6时,主题的表达效果更好,综合考虑SBERT-LDA-DC模型生成主题群效果和主题可解释性,实验中选择主题数k=6,采用LDA对评论文本进行主题建模,获得每个评论文本的主题概率向量,即每个评论文本对应一个6维的向量表示。

图5 主题一致性随主题数量的变化情况Fig.5 Topic consistency changes with the number of topics

在分别获得评论文本的句子嵌入向量以及主题概率向量后,对其赋予不同权重,其中句子嵌入向量权重为1,主题概率向量权重为5。将赋予权重后的向量进行加权拼接,由于拼接向量处在稀疏的高维空间,因此使用自编码器对拼接向量进行无监督学习,使用训练好的自编码器对拼接向量进行特征压缩,将拼接向量从518维压缩至32维。

3.3 评论文本主题识别

通过自编码器将评论文本句子嵌入向量和主题概率向量的加权拼接向量压缩得到低维向量,即每个评论文本对应一个32维向量表示。为了对评论文本进行主题识别,需要对评论文本向量矩阵进行聚类分析,之后从聚类结果中提取上下文主题信息。对于向量聚类,本研究采用基于密度Canopy的改进K-means算法,与K-means算法相比,该算法对噪声数据不敏感且拥有更好的聚类效果,解决了传统K-means算法需要人工指定聚类个数K和最佳初始种子的问题。实验使用该聚类算法对评论文本向量进行聚类,即先通过密度Canopy算法对评论文本向量进行预聚类,将获得的最优值k=7以及对应的7个初始聚类中心作为K-means算法的输入参数,然后按照K-means算法流程进行聚类,最终将评论文本语料库聚合成7个类簇。

3.4 实验结果

使用UMAP降维算法对获得的7个类簇的评论文本向量降维,将数据降维至二维进行可视化展示,如图6所示。

图6 7个类簇分布的UMAP图Fig.6 UMAP of 7 clusters distribution

从图6可以看出,评论文本向量聚类得到的类簇不同主题之间边界清晰,同一主题内凝聚,进一步验证了SBERT-LDA-DC在短文本具体聚类任务上具有较好的效果。

本研究在模型识别出的7个类簇的基础上,将主题词设置为8个,各个类簇的主题信息如表1所示。

表1 各个类簇的主题信息Tab.1 Topic information for each cluster

由表1可以看出,用户对舞剧《永不消逝的电波》的评论主题主要分为舞台技术评价、舞台效果、整体评价以及观看前后的个人经历4个方面。其中观众对于舞台技术评价的评论最多,“音乐” “布置” “灯光”等高频词汇反映了用户对于舞台技术的使用及其对观看体验影响的看法。例如:“舞台装置、音乐灯光把气氛烘托得挺不错的” “怎么有这么好看的舞剧?舞者、灯光、音乐把控得非常好”等。关于“舞台效果”主题的评论,“舞台效果” “情感” “氛围” “感染力”等词,说明观众对于舞剧《永不消逝的电波》的主创团队所表现出的舞台效果有比较深刻的印象,如“很震撼,舞蹈很美,舞台效果很好,音乐非常好听,有几段情节特别感人” “很喜欢,氛围很好,感染力十足!”。占比较少的主题为观众对于舞剧的整体评价,如“完美的体验,天花板级别的舞剧” “首席组的电波真的太好看了”,这类评论情感较为强烈,表达了用户的满意程度。最后是关于观众观看舞剧前后的个人经历等,与舞剧本身的内容评价相关性较小。例如:“跟朋友看完以后,会一起聊几天的那种美” “两年前一直想看,终于等到了合适的时间、合适的地点来看了”。

3.5 实验对比

一致性度量是一种评估主题质量的方法,其根据主题的可理解性进行评估,通常应用于通过主题模型计算得出的主题。主题一致性度量方法通常基于词语之间的共现关系和相似度进行计算。Gensim提供了4种计算主题连贯性的方法,即C_V,C_UCI,C_NPMI和U_Mass。这些方法能够评估主题一致性,并给出一致性得分。一致性得分越高,表示主题模型能够更好地理解评论文本的语义特征,对主题的划分也更加精准。与其他广泛使用的主题一致性度量方法相比,C_V Coherence方法表现更优,因此本研究采用该指标对不同方法计算出的主题质量进行了评估。

表2给出了使用SBERT-LDA(使用K-means算法进行文本特征向量聚类)、SBERT-LDA-K-means++(使用K-means++算法进行文本特征向量聚类)和SBERT-LDA-DC(使用基于密度Canopy的改进K-means算法进行文本特征向量聚类)3种方法的对比情况。实验使用Gensim包的Coher-enceModel来计算主题一致性,采用C_V方法进行计算,结果如表2所示。

表2 实验结果Tab.2 Experimental results

由表2可见,本文方法在数据集上得到的主题一致性指标值最高,为0.379 32,相较于SBERT-LDA方法,本文一致性指标值提升了22.9%;相较于“SBERT-LDA-K-means++”方法,一致性指标值提升了6.0%。由此可见,本文方法在无需指定聚类个数的同时,在主题识别效果上也要优于其他2种方法,从而验证了本文所提方法的有效性。

4 结 语

本文针对SBERT-LDA方法存在的不足,提出了SBERT-LDA-DC方法,通过采用密度Canopy改进K-means算法,避免了传统K-means算法因需要人工设定k值和随机选择初始聚类中心引起的聚类结果不稳定以及容易陷入局部最优解的问题,使聚类结果尽可能接近全局最优解。通过对比实验可以看到,本文方法在主题一致性上要优于使用K-means对特征向量聚类的SBERT-LDA方法以及SBERT-LDA-K-means++方法。

本文方法能够有效挖掘评论文本中具有语义信息的关键主题词,识别评论文本中包含的主题信息。相较于K-means算法,基于密度Canopy的改进K-means算法计算的复杂度更高,因此需要的计算资源也会更多。此外,可以使用评论文本对Sentence-BERT模型进行微调,使其更好地理解句子之间的语义关系,进一步提高评论文本主题识别效果。未来将在模型复杂度、微调Sentence-BERT模型方面进行改进,进一步提高评论文本主题识别的效果和效率。

猜你喜欢

文档语义聚类
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
语言与语义
基于DBSACN聚类算法的XML文档聚类
基于高斯混合聚类的阵列干涉SAR三维成像
基于RI码计算的Word复制文档鉴别
“上”与“下”语义的不对称性及其认知阐释
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
一种层次初始的聚类个数自适应的聚类方法研究
认知范畴模糊与语义模糊