我需要一些帮助在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;。
的含义答案 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)