2015-12-23 8 views
8

Przechodzę teraz do metody modelowania LDA (Algorytm Latent Dirichlet), aby pomóc w ekstrakcji tematów z zestawu dokumentów. Z tego, co zrozumiałem z poniższego linku, wynika, że ​​jest to nienadzorowane podejście do uczenia się, kategoryzowania/oznaczania każdego z dokumentów za pomocą wyodrębnionych tematów.Modelowanie tematyczne - Przypisywanie dokumentu z 2 najważniejszymi tematami jako etykietą kategorii - sklearn Latent Dirichlet Allocation

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

W przykładowym kodem podanym w tym linku znajduje się funkcja zdefiniowana, aby uzyskać najlepsze słowa związane z każdym tematem zidentyfikowane.

sklearn.__version__ 

Out [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) 

Moje pytanie jest takie. Czy istnieje dowolny komponent lub macierz zbudowanego modelu LDA, skąd możemy uzyskać skojarzenie tematu dokumentu?

Na przykład muszę znaleźć górne 2 tematy związane z każdym dokumentem jako etykietą dokumentu/kategorią dla tego dokumentu. Czy istnieje jakiś element do znalezienia dystrybucji tematów w dokumencie, podobny do model.components_ do wyszukiwania słów w temacie.

Odpowiedz

9

Można obliczyć powiązanie dokumentu i tematu za pomocą funkcji transform (X) klasy LDA.

na kodzie przykładowym, byłoby to:

doc_topic_distrib = lda.transform(tf) 

z LDA zamocowana LDA i TF danych wejściowych, które chcesz przekształcić

+0

Dzięki! Pracowałem jak czar – prashanth

+0

Jestem trochę zdezorientowany w tym rozwiązaniu. Miałem nadzieję uzyskać wynik, który pokazuje tematy związane z każdym dokumentem. Coś takiego jak ten Dokument # 1: Temat: [1, 2, 3] – moku

+0

To, co otrzymujesz, to dystrybucja tematów dla każdego dokumentu. Tak więc każda linia odpowiada dokumentowi i każdej kolumnie tematowi. Aby uzyskać pożądany wynik, możesz spojrzeć na każdą linię i uzyskać indeksy kolumn trzech największych wartości. Poda ci trzy najważniejsze tematy na każdy dokument. – clemgaut