【发布时间】:2016-01-21 18:24:54
【问题描述】:
我正在收集推特数据。我按指定的术语“生日”过滤流。我希望能够在数据收集的同时计算频率,而不会中断它。 现在它只是打印所有内容。
如果我要创建另一个函数 def data_processing() 来计算词频,我如何从 def on_data(self, data) 访问 z= nltk.word_tokenize(extracted) ?
import tweepy
import json
import nltk
import time
# counting
import numpy
from collections import Counter
# Authentication details. To obtain these visit dev.twitter.com
consumer_key = XXX
consumer_secret = XXX
access_token = XXX
access_token_secret = XXX
sequence=[]
# This is the listener, resposible for receiving data
class StdOutListener(tweepy.StreamListener):
def on_data(self, data):
# Twitter returns data in JSON format - we need to decode it first
decoded = json.loads(data)
# Also, we convert UTF-8 to ASCII ignoring all bad characters sent by users
decoded['text'].encode('latin1', 'ignore')))
extracted=decoded['text'].encode('ascii', 'ignore').decode('ascii')
z= nltk.word_tokenize(extracted)
print(z)
return True
if __name__ == '__main__':
l = StdOutListener()
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
print ("Showing all new tweets for #programming:")
# There are different kinds of streams: public stream, user stream, multi-user streams
# In this example follow #programming tag
# For more details refer to https://dev.twitter.com/docs/streaming-apis
stream = tweepy.Stream(auth, l, timeout=60)
stream.filter(track=['birthday'])
【问题讨论】:
标签: python twitter nltk tweepy