如何使用python单独获取英文推文?

时间:2013-12-14 04:40:57

标签: python twitter nltk

这是我目前的代码

from twitter import *

t = Twitter(auth=OAuth(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, 
        ACCESS_TOKEN, ACCESS_TOKEN_SECRET))

t.statuses.home_timeline()
query=raw_input("enter the query \n")
data = t.search.tweets(q=query)

for i in range (0,1000):    
    print data['statuses'][i]['text']
    print '\n'

在这里,我从所有语言中获取推文。有没有办法限制自己只用英语提取推文?

2 个答案:

答案 0 :(得分:4)

至少有4种方式......我按顺序排列。

  1. 收集推文后,json输出有一个标识语言的键/值对。因此,您可以使用此类内容来获取所有语言推文,并仅选择来自英语帐户的推文。

    for i in range (0,1000):
       if data['statuses'][i][u'lang']==u'en':
          print data['statuses'][i]['text']
          print '\n'
    
  2. 另一种只收集用英语标识的推文的方法,你可以使用可选的'lang'参数来从API请求只有英文(自我识别)的推文。详见here。如果您使用的是python-twitter库,则可以在twitter.py中设置“lang”参数。

  3. 使用guess-language等语言识别包。

  4. 或者,如果您想在不使用自我识别的推特数据(即使用英文撰写的中文帐户)的情况下识别英文文本,则必须进行自然语言处理。 One option。此方法将识别常用英语单词,然后将文本标记为英语。

答案 1 :(得分:0)

我为波斯语尝试了这个:

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)

auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth) 

res = api.search('lang','fa')
for i in res:
    print( i.lang)