weixin_55043902
weixin_55043902
采纳率50%
2021-05-10 22:02 阅读 77

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

50

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    technologist_09 CSDN专家-HGJ 2021-05-11 15:31

    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()]
    点赞 1 评论 复制链接分享
  • technologist_32 CSDN专家-Time 2021-05-10 22:06

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

    点赞 评论 复制链接分享
  • weixin_55043902 weixin_55043902 2021-05-10 22:11

    #代码如下

    #导入库

    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)

    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 2021-05-11 10:01

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

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

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

    点赞 评论 复制链接分享
  • QA_Assistant 有问必答小助手 2021-05-11 15:57

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

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

    点赞 评论 复制链接分享

相关推荐