機器學習之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_每篇文檔的主題分布


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM