向大佬请教,做LDA主题分析时,多个主题结果一样

如图中所示,我在做一些企业年报的分析,可能数据量比较小(100多篇)。分析的结果总是除了一个主题,其他主题结果一样。这是出什么问题了嘛?数据用Excel转csv保存的,一个报告放在一格中,去掉了换行符号。难道是每个句子放一格嘛?

1.数据上,读取时要设置header;2.在分词之前,要将各行数据进行处理。这样改:

texts=pd.read_excel(r'data1.xlsx',header=None).astype(str)
#通过jieba进行切词生成词袋

text = [jp.cut(i) for i in texts.values.ravel()]

请问您解决了吗,我也遇到了同样的问题。。

建议把代码贴一贴。实在不好判断你是怎么对数据进行操作的。

#代码如下

#导入库

from gensim import corpora

from gensim.models import LdaModel

from gensim import models

from gensim.corpora import Dictionary

import pandas as pd

import jieba.posseg as jp, jieba

import opencc


 

#读取数据

texts=pd.read_excel(r'data1.xlsx').astype(str)

 

#繁体转化为简体

texts.iloc[:,0].apply(lambda x:opencc.OpenCC('t2s').convert(x))

 

#通过jieba进行切词生成词袋

text=[jp.cut(i) for i in texts]

 

#添加停用词性

flags = ('n', 'nr','v','ns', 'nt','d')

#停用词列表,这里“cn_stopwords.txt”使用百度停用词表

stoplist=open('stopwords-master/HIT_stopwords.txt','r').read().split('\n')

 

#将于停用词性中相同词性的词和停用词表中的词剔除,并剔除长度为1的词

data = [[w.word for w in words if (w.word not in stoplist and w.flag in flags and len(w.word)>2)] for words in text]

 

#将清洗后的数据转化为 Corpora_Dictionary

dictionary = corpora.Dictionary(data)

#压缩词向量,去掉出现的文章小于2的词,和在50%的文章都出现的词,整体长度限制在500

 

corpus = [ dictionary.doc2bow(text) for text in data]

 

#进行TF/IDF编码, 这一步是用来调整语料中不同词的词频,将那些在所有文档中都出现的高频词的词频降低

tfidf = models.TfidfModel(corpus)

corpus_tfidf = tfidf[corpus]

 

#主题个数

num_topics=15

#训练LDA模型,passes为迭代次数

lda = LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics, passes=100)


 

#打印主题

for topic in lda.print_topics(num_words=20,num_topics=num_topics):

print(topic)

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y