如何在Python中为LDA模型创建for循环

时间:2017-04-26 23:44:50

标签: python lda

我需要一些帮助在Python中创建一个for循环。我是一个完整的编码新手。请指出我正确的方向。

这是我到目前为止所做的事情。我使用Twitter API来传输有关主题的1000条推文。然后我使用lda模型找到前三个主题。

现在我需要通过以下代码遍历文档(推文),其中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(corpus [x])在每个文档(tweet)上运行模型,然后将该推文分配给具有最高概率主题匹配的主题。我相信我可以使用数据框或单独的列表来存储分配。我不知道&#34; dataframe&#34;。

的含义

1 个答案:

答案 0 :(得分: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)