机器学习之sklearn——主题模型

from gensim import corpora, models

       corpus只截取了一部分

lsi = models.LsiModel(corpus_tfidf, num_topics=2, id2word=dic) 将文本的tfidf向量输入生成Lsi模型,num_topics为生成主题个数,也为Lsi进行SVD分解时,生成矩阵列向量数;id2word是语料字典

topic_result = [a for a in lsi[corpus_tfidf]]  此处给lsi的索引为tfidf向量,而不是corpus向量!!

pprint(lsi.print_topics(num_topics=2, num_words=5))

lsi生成了2个主题,这里的系数为权重而不是概率值

similarity = similarities.MatrixSimilarity(lsi[corpus_tiidf])   根据lsi计算文档间的相似性

pprint(list(similarity)) 通过list函数将一个迭代器生成列表

lda = models.LdaModel(corpus_tfidf, num_topics=2, id2word=dictionary,alpha='auto', eta='auto', minimum_probability=0.001)   alpha,eta即为LDA公式中的α和β,minimum_probability表示主题小于某个值(比如0.001)就舍弃此主题。

显示文档主题有两种方法:

doc_topic = [a for a in lda[corpus_tfidf]] ##法1
pprint(doc_topic)

for doc_topic in lda.get_document_topics(corpus_tiidf): ##法2

  print doc_topic

结果大致相同

for topic_id in range(2):

   print 'Topic', topic_id 

   pprint(lda.get_topic_terms(topicid=topic_id))       lda生成的主题中的词分布,默认显示10个

   pprint(lda.show_topic(topicid=topic_id)) 

 

lda.get_document_topics(corpus_tfidf)    可以获得每个文档的主题分布

similarity = similarities.MatrixSimilarity(lda[corpus_tiidf]) 通过LDA也能生成相似矩阵

pprint(list(similarity)) 

也可以安装lda包,import lda

model = lda.LDA(n_topics=, n_iter=,)n_topics生成主题个数,n_iter迭代次数

model.fit(X)

model.topic_word_ 生成每个主题以及主题中词分布

model.doc_topic_每篇文档的主题分布

转载于:https://www.cnblogs.com/lvtianqi/p/6269990.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值