2015-08-17 31 views
5

Jestem nowym użytkownikiem Pythona. Właśnie zacząłem pracować nad projektem, aby korzystać z modelowania tematów LDA na tweetach. Próbuję następujący kod:Dane wejściowe modelowania tematu LDA

W tym przykładzie użyto internetowego zestawu danych. Mam plik csv zawierający tweety, których potrzebuję użyć. Czy ktoś może mi powiedzieć, w jaki sposób mogę użyć mojego lokalnego pliku? Jak powinienem tworzyć swój własny wokal i tytuły?

Nie mogę znaleźć samouczka wyjaśniającego, jak przygotować materiały do ​​LDA. Wszyscy zakładają, że już wiesz, jak to zrobić.

from __future__ import division, print_function 
 

 
import numpy as np 
 
import lda 
 
import lda.datasets 
 

 

 
# document-term matrix 
 

 
X = lda.datasets.load_reuters() 
 
print("type(X): {}".format(type(X))) 
 
print("shape: {}\n".format(X.shape)) 
 

 
# the vocab 
 
vocab = lda.datasets.load_reuters_vocab() 
 
print("type(vocab): {}".format(type(vocab))) 
 
print("len(vocab): {}\n".format(len(vocab))) 
 

 
# titles for each story 
 
titles = lda.datasets.load_reuters_titles() 
 
print("type(titles): {}".format(type(titles))) 
 
print("len(titles): {}\n".format(len(titles))) 
 

 

 
doc_id = 0 
 
word_id = 3117 
 

 
print("doc id: {} word id: {}".format(doc_id, word_id)) 
 
print("-- count: {}".format(X[doc_id, word_id])) 
 
print("-- word : {}".format(vocab[word_id])) 
 
print("-- doc : {}".format(titles[doc_id])) 
 

 

 
model = lda.LDA(n_topics=20, n_iter=500, random_state=1) 
 
model.fit(X) 
 

 

 
topic_word = model.topic_word_ 
 
print("type(topic_word): {}".format(type(topic_word))) 
 
print("shape: {}".format(topic_word.shape)) 
 

 

 
for n in range(5): 
 
    sum_pr = sum(topic_word[n,:]) 
 
    print("topic: {} sum: {}".format(n, sum_pr)) 
 

 

 
n = 5 
 
for i, topic_dist in enumerate(topic_word): 
 
    topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n+1):-1] 
 
    print('*Topic {}\n- {}'.format(i, ' '.join(topic_words))) 
 

 

 
doc_topic = model.doc_topic_ 
 
print("type(doc_topic): {}".format(type(doc_topic))) 
 
print("shape: {}".format(doc_topic.shape))

Odpowiedz

6

wiem, że to przychodzi trochę późno, ale mam nadzieję, że helps.You najpierw zrozumieć, że ma zastosowanie LDA (dokument Term Matrix) tylko w DTM. Więc proponuję Ci wykonać następujące kroki:

  1. Załaduj plik CSV
  2. Extract wymaganych tweety z pliku
  3. Czyste dane
  4. Tworzenie słownika zawierającego każde słowo korpusu generowane
  5. budowa struktury TDM
  6. pasują do struktury pliku danych
  7. uzyskać słownictwo - funkcje TDM (słowa)
  8. dalej stosując powyższy kod

Tutaj mogą zapewnić ten kod, aby pomóc Ci zacząć -

token_dict = {} 

for i in range(len(txt1)): 
    token_dict[i] = txt1[i] 

len(token_dict) 


print("\n Build DTM") 
%time tf = CountVectorizer(stop_words='english') 

print("\n Fit DTM") 
%time tfs1 = tf.fit_transform(token_dict.values()) 

# set the number of topics to look for 
num = 8 

model = lda.LDA(n_topics=num, n_iter=500, random_state=1) 

# we fit the DTM not the TFIDF to LDA 
print("\n Fit LDA to data set") 
%time model.fit_transform(tfs1) 

print("\n Obtain the words with high probabilities") 
%time topic_word = model.topic_word_ # model.components_ also works 

print("\n Obtain the feature names") 
%time vocab = tf.get_feature_names()