使用Twitter进行情感分析

时间:2019-03-20 01:25:46

标签: python-3.x twitter sentiment-analysis

在从10个公司的twitter处获取数据时出现了问题,我正在从每个公司的twitter处获取1万条记录并对此进行情感分析,但是在获取记录时卡住了,然后停止了!我是获取数据以执行情感分析并创建单独的文件,然后合并到一个文件中,但是在为第一家公司本身获取数据时,代码被卡住了

import tweepy

from textblob import TextBlob

import pandas as pd

Access_token="`access token here`"
Access_token_secret="`access token secret here`"
Consumer_key="`consumer key here`"
Consumer_secret_key="`consumer secret key here`"

auth=tweepy.OAuthHandler(Consumer_key,Consumer_secret_key)
auth.set_access_token(Access_token,Access_token_secret)
api=tweepy.API(auth)

search_list = ['company names here in a list']

for n in search_list:

    positive_tweet = []

    negative_tweet = []

    neutral_tweet = []

    Final_list = []

    new_list = []
   tweets = tweepy.Cursor(api.search, q=str(n) + '-filter:retweets', lang='en', since='2018-01-01').items(10000)

    for tweet in tweets:

        print(tweet.text)

        analysis = TextBlob(tweet.text)

        if (analysis.sentiment.polarity) > 0:

            positive_tweet.append(analysis.sentiment.polarity)
        elif analysis.sentiment.polarity < 0:
            negative_tweet.append(analysis.sentiment.polarity)
        elif analysis.sentiment.polarity == 0:
            neutral_tweet.append(analysis.sentiment.polarity)
        else:
            print('Emotionless & No Opinion regarding tweet')
    total = len(positive_tweet) + len(negative_tweet) + len(neutral_tweet)
    percentage_of_postive_review = float(len(positive_tweet) / (total) * 100)
    new_list.append(n)
    new_list.append(percentage_of_postive_review)
    # print(new_list)
    if new_list != []:
        label = ['Company Name', 'Review']
        i = 0
        j = 2
        while i < j and j <= len(new_list):
            Final_list.append(new_list[i:j])
            i = i + 2
            j = j + 2
        df = pd.DataFrame.from_records(Final_list, columns=label)
        # print(df)
        df.to_csv('D:/Review_Rating/Company Review' + str(n) + '.csv', index=False)

1 个答案:

答案 0 :(得分:0)

您的代码正在生成此错误消息:

tweepy.error.TweepError: Twitter error response: status code = 429

此错误消息与“ 太多请求。

有关

用尽速率限制后将引发此错误。有关速率限制的详细信息,请参见下面的Twitter参考。

更新一个密码

更改此行代码:

api=tweepy.API(auth)

至:

api= tweepy.API(auth, wait_on_rate_limit=True)

更新两个密码

我还更改了以下代码行:

tweets = tweepy.Cursor(api.search, 
                       q=str(n) + '-filter:retweets', 
                       lang='en', 
                       since='2018-01-01').items(10000)

对此:

# note the count, which helped increase performance.
tweets = tweepy.Cursor(api.search,
                    q=str(n) + '-filter:retweets',
                    count=100,
                    since='2018-01-01',
                    lang="en").items(500)

评论

  1. 您需要调整search_list中的10个关键字。我在Twitter上测试了这些结果,结果有误报。

  2. 当我将项目限制设置为500时,仍然每个search_list中列出的公司名称获得500条推文。一个公司名称仅产生207个结果。

  3. 我建议对每家公司进行测试,以确定可以收获多少条推文。

  4. 您的代码未将收集的推文写入文件。我建议将推文写入文件名-company_name_MMDDYYYY.txt。这样一来,您无需重复收集推文就可以执行二级处理。

  5. 我会将所有情感分析数据元素写入单个CSV文件。

总体而言,经过这两次修改后,原始代码的运行速度更快,但最终仍需要进行更多调整。愉快的编码...

推特参考

Twitter API returns HTTP status codes

Rate Limiting

Standard API rate limits

Standard search API