2017-04-26 22 views
1

私はPythonでforループを作成する助けが必要です。私は完全なコーディングの初心者です。正しい方向に私を指差してください。forループをPython for LDAモデルで作成する方法

これまで私が行ってきたことは次のとおりです。私は、Twitter APIを使って1000件のつぶやきをストリーミングしています。その後、ldaモデルを使用して上位3つのトピックを見つけました。

ここでは、各文書のトピックの分布を取得するために、xが文書番号(0〜999)に等しい以下のコードで文書(つぶやき)をループする必要があります。 ldamodel.get_document_topics(コーパス[x]) 誰かが私のループを定式化する方法を正しい方向に向けることができますか?ここで

は、これまでの私の推測です:

ツイート(完了していない)、このコードを使用して引っ張った。

def get_tweets(input_query): 
    consumer_key = "x" 
    consumer_secret = "x" 
    access_token = "x" 
    access_token_secret = "x" 
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 
    auth.set_access_token(access_token, access_token_secret) 
    api = tweepy.API(auth) 
    return tweepy.Cursor(api.search, q=input_query, lang="en").items() 

input_queries = ['Tornado'] 
tweets = {} 
dataset = defaultdict(list) 
for input_query in input_queries: 
    tweets = get_tweets(input_query) 
    download_tweet_count = 1000 
    print(input_query) 
    counter = 0 
    .... 

    .... 
ldamodel = models.ldamodel.LdaModel(corpus, num_topics=3, id2word = 
dictionary, passes=20) 

counter = 0 
for x in download_tweet_count: 
while counter < x: 
    try: 
     ldamodel.get_document_topics(corpus[x]) 

を私はldamodel.get_document_topicsを持つすべての文書(つぶやき)(コーパス上でモデルを実行する必要があります[x])、そのつぶやきを最も高い可能性のあるトピックマッチのトピックに割り当てます。私は割り当てを格納するためにデータフレームまたは別のリストを使用できると信じています。私は "データフレーム"が何を意味するのか分かりません。

+0

ドキュメントを見て、ループを作成してコードに戻ってみてください。喜んでお手伝いいたします。 docsへのリンク:https://docs.python.org/3/tutorial/controlflow.html – lordingtar

答えて

0

これは自分のコードのスニペットで、通常LDAを実行するためのマトリックスを作成する方法です。

# loop through the feature and construct the feature array 
features_size = len(features.items()) 

X = [] #np.ndarray. This is what we are going to put in LDA module. 

for i in TweetFeatures.items(): # TweetFeatures is words that appeared in your tweet 
    current_vector = np.array([0]*features_size) 
    for j in i[1]: # TweetFeatures key is your tweet ID and value is array of words. (This depends on how you define them) 
     if j in map_id_2_index: 
      current_vector[map_id_2_index[j]] = 1 
    X.append(current_vector) 
X=np.array(X) # document-term matrix 
X=X[~np.all(X == 0, axis=1)] # remove all zero line 
print("type(X): {}".format(type(X))) 
print("shape: {}\n".format(X.shape)) 

#################################### 
#### LDA MODELLING ################# 
#################################### 
model = lda.LDA(n_topics=5, n_iter=1000, random_state=1) 
model.fit(X) 
関連する問題