2015-12-23 27 views
8

我正在通過LDA(潛在Dirichlet分配)主題建模方法來幫助從一組文檔中提取主題。從我從下面的鏈接中瞭解到的情況來看,這是一種無監督的學習方法,將每個文檔與提取的主題進行分類/標記。主題建模 - 將具有前2個主題的文檔分配爲類別標籤 - sklearn潛在Dirichlet分配

Topic extraction with Non-negative Matrix Factorization and Latent Dirichlet Allocation

在該鏈路中給出的示例代碼,存在定義爲獲得與每個所識別主題相關聯的頂部字的功能。

sklearn.__version__ 

出[41]: '0.17'

from sklearn.decomposition import LatentDirichletAllocation 


def print_top_words(model, feature_names, n_top_words): 
    for topic_idx, topic in enumerate(model.components_): 
     print("TopiC#%d:" % topic_idx) 
     print(" ".join([feature_names[i] 
         for i in topic.argsort()[:-n_top_words - 1:-1]])) 
    print() 

print("\nTopics in LDA model:") 
tf_feature_names = tf_vectorizer.get_feature_names() 
print_top_words(lda, tf_feature_names, n_top_words) 

我的問題是這樣的。是否有任何組件或矩陣的內置模型LDA,從中我們可以得到文檔 - 主題關聯

例如,我需要找到與每個doc關聯的前2個主題作爲Doc的文檔標籤/類別。是否有任何組件可以查找文檔中的主題分佈,類似於在主題內查找單詞分佈的model.components_

回答

9

您可以使用LDA類的transform(X)函數計算文檔 - 主題關聯。

在示例代碼,這將是:

doc_topic_distrib = lda.transform(tf) 

與LDA擬合LDA和TF要變換

+0

由於輸入數據!像魅力一樣工作 – prashanth

+0

我對這個解決方案有點困惑。我希望能得到一個顯示與每個文檔關聯的主題的輸出。像這樣的文檔#1:主題:[1,2,3] – moku

+0

你得到的是每個文檔的主題分佈。所以每一行對應一個文檔,每一列對應一個主題。爲了得到你想要的結果,你可以做的就是查看每一行並獲得三個最大值的列索引。這會給你每個文件三個最重要的話題。 – clemgaut

相關問題