使用twitter进行情感分析

问题描述 投票:1回答:1

我在从Twitter获取10家公司的数据时遇到了一些问题,我从Twitter为每家公司提取了10万条记录,并对此进行了情绪分析,但在获取记录时它会卡住,然后停止!我正在获取数据执行情绪分析和创建单独的文件然后合并到一个文件,但代码在获取第一家公司本身的数据时陷入困境

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)
python-3.x twitter sentiment-analysis
1个回答
0
投票

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

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

此错误消息与“Too Many Requests”有关。

当您的费率限制用尽时,会抛出此错误。有关速率限制的详细信息,请参阅以下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 REFERENCES

Twitter API returns HTTP status codes

Rate Limiting

Standard API rate limits

Standard search API

© www.soinside.com 2019 - 2024. All rights reserved.