上下文
我正在为Twitter项目进行主题建模。 这个想法是检索与特定国家/地区相关的所有推文,并对其进行分析,以便发现特定国家/地区的人们在Twitter上正在谈论什么。
我尝试过的事情
1。第一个解决方案
我知道我们可以使用Twitter流API或游标从特定国家/地区检索推文,并且我尝试了以下代码来获取给定国家/地区地理坐标的所有推文。
我写了以下代码:
def get_tweets(query_fname, auth, max_time, location=None):
stop = datetime.now() + max_time
twitter_stream = Stream(auth, CustomListener(query_fname))
while datetime.now() < stop:
if location:
twitter_stream.filter(locations=[11.94,-13.64,30.54,5.19], is_async=True)
else:
twitter_stream.filter(track=query, is_async=True)
这种方法的问题
并不是每个人都允许Twitter访问其位置详细信息,并且通过这种方法,我只能获得几条类似我的位置的300条推文。
有些人不在该国,但在推特上发了推文,该国中的人回复了他们。他们的推文没有被这种方法捕获。
2。第二种解决方案
另一种方法是使用带有光标的国家/地区收集带有#标签的推文
我已经尝试过此代码:
def query_tweet(client, query=[], max_tweets=2000, country=None):
"""
query tweets using the query list pass in parameter
"""
query = ' OR '.join(query)
name = 'by_hashtags_'
now = datetime.now()
today = now.strftime("%d-%m-%Y-%H-%M")
with open('data/query_drc_{}_{}.jsonl'.format(name, today), 'w') as f:
for status in Cursor(
client.search,
q=query,
include_rts=True).items(max_tweets):
f.write(json.dumps(status._json) + "\n")
问题
与第一种方法相比,这种方法产生的结果更多,但您可能会注意到,并不是每个人都使用这些主题标签发布有关该国家的推文。
3。第三种方法
我尝试使用特定于某个国家/地区的地点ID来检索该推文,但与第一种方法存在相同的问题。
我的问题
提示:对于不在该国的人来说,如果该国内的人回复或转发了他们的推文,则可能是个好主意。
致谢。