Анализ настроений с помощью твиттера - PullRequest
1 голос
/ 20 марта 2019

У меня возникли некоторые проблемы при получении данных из твиттера для 10 компаний, я извлекаю 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)

1 Ответ

0 голосов
/ 20 марта 2019

Ваш код выдает это сообщение об ошибке:

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

Это сообщение об ошибке связано с ' Too Many Requests. '

Эта ошибка выдается, когда вы исчерпали свой лимит скорости. См. Ссылки в Твиттере ниже для подробностей об ограничениях скорости.

ОБНОВЛЕНИЕ ОДНОГО К ВАШЕМУ КОДУ

Изменить эту строку кода:

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. 10 ключевых слов, которые у вас есть в search_list, должны быть скорректированы. Я проверил их в Твиттере, и результаты оказались ложными.

  2. Когда я устанавливаю предел элемента в 500, я все равно не получаю 500 твитов на название компании, указанное в списке поиска. Одно название компании дало только 207 результатов.

  3. Я бы порекомендовал протестировать каждую компанию, чтобы определить, сколько твитов вы можете собрать.

  4. Ваш код не записывает собранные твиты в файл. Я бы порекомендовал написать твиты с именем файла - company_name_MMDDYYYY.txt. Это позволит вам выполнять вторичную обработку, не собирая твиты снова и снова.

  5. Я бы записал все элементы данных анализа настроений в один файл CSV.

В целом ваш исходный код работает быстрее с этими двумя модификациями, но он все еще нуждается в доработке с вашей стороны. СЧАСТЛИВЫЙ КОДИНГ ...

ССЫЛКИ НА ТВИТЕР

Twitter API возвращает коды состояния HTTP

Ограничение скорости

Стандартные ограничения по API

Стандартный API поиска

...