机器学习之sklearn——主题模型
发布日期:2021-09-03 07:28:17 浏览次数:66 分类:技术文章

本文共 1336 字,大约阅读时间需要 4 分钟。

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

转载地址:https://blog.csdn.net/weixin_34183910/article/details/92878092 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:一、Asp.Net Core WebAPI——修改默认监听端口
下一篇:openstack部署(四)--网络配置(Networking)

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 15时47分10秒