Рубрики
Без рубрики

Базовый анализ данных в Twitter с Python

Автор оригинала: FreeCodeCapm Team.

Лукас Коохорст

После создания Бесплатный WTR бот, используя Tweepy и Python и Этот код Я хотел увидеть, как пользователи Twitter воспринимают бот и то, что было их настроение. Поэтому я создал простую программу анализа данных, которая принимает данное количество твитов, анализирует их и отображает данные на графике разброса.

Настраивать

Мне пришлось установить несколько пакетов, чтобы создать это: Tweepy , Tkinter , TextBlob и Матплотлиб Отказ Вы можете установить каждый из них с помощью менеджера пакета PIP. Например:

pip install tweepy

Или вы можете клонировать в репозиторий GitHub, как это.

git clone https://github.com/sloria/textblobcd textblobpython setup.py install

Далее вам нужно будет создать новый Python Файл и импортируйте следующие пакеты.

import tweepy #The Twitter APIfrom Tkinter import * #For the GUIfrom time import sleepfrom datetime import datetimefrom textblob import TextBlob #For Sentiment Analysisimport matplotlib.pyplot as plt #For Graphing the Data

Учетные данные Twitter

Теперь нам нужно связать учетную запись Twitter для нашего сценария. Если у вас уже нет, создайте один.

Перейти к Apps.twitter.com и войдите в систему с вашей учетной записью. Создайте приложение Twitter и генерировать потребительский ключ, потребительский секрет, токен доступа и секрет токена доступа.

Под своими импортными операторами храните свои учетные данные в переменных, а затем используйте второй блок кода для аутентификации вашей учетной записи с Tweepy.

consumer_key = 'consumer key'consumer_secret = 'consumer secrets'access_token = 'access token'access_token_secret = 'access token secret'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)auth.set_access_token(access_token, access_token_secret)api = tweepy.API(auth)

Если вы хотите проверить, чтобы увидеть, правильно ли ваша учетная запись является правильной аутентификацией, вы можете просто напечатать имя пользователя на консоль.

user = api.me()print (user.name)

Создание графического интерфейса

Для интерфейса мы будем использовать две этикетки: один для Поиск а другой для Размер выборки или количество твитов для анализа. Нам также понадобится кнопка отправки, чтобы при нажатии мы можем позвонить наше getdata функция.

root = Tk()
label1 = Label(root, text="Search")E1 = Entry(root, bd =5)
label2 = Label(root, text="Sample Size")E2 = Entry(root, bd =5)
submit = Button(root, text ="Submit", command = getData)

Так что компьютер знает, чтобы держать графический интерфейс на экране, нам нужно пакет Наши ярлыки, а затем петля корневой дисплей.

label1.pack()E1.pack()
label2.pack()E2.pack()
submit.pack(side =BOTTOM)
root.mainloop()

Просто запустив этот код, вы должны увидеть окно, которое выглядит что-то подобное:

Однако, когда текст вводится в этикетки или Отправить Кнопка нажала, ничего не происходит. Мы должны собирать данные.

Анализируя твиты

Во-первых, мы должны получить ввод текста в этикетки.

def getE1():    return E1.get()
def getE2():    return E2.get()

Теперь мы готовы кодировать getdata функция. Отныне все код в этой функции:

def getData():    #Code

Нам нужно использовать Gete1 () и Gete2 () Функции. Эти магазины наша Поиск и Размер выборки в переменных, которые мы можем пройти петлю.

getE1()    keyword = getE1()
getE2()    numberOfTweets = getE2()    numberOfTweets = int(numberOfTweets)

Для хранения наших данных мы можем использовать списки. Один список предназначен для полярности (или настроения) твитов, а другой для числа твитов (чтобы мы могли графическими данные).

    polarity_list = []    numbers_list = []    number = 1

Количество твитов должно быть объявлено 1, потому что значение по умолчанию равно 0.

Теперь мы можем начать соблюдать твиты и проанализировать их. Используя TextBlob, мы можем найти настроение каждого Tweet и хранить его в переменной Полярность Отказ Затем мы можем добавить эту переменную нашим Polarity_List наряду с добавлением номера нашему Number_List Отказ

analysis = TextBlob(tweet.text)analysis = analysis.sentimentpolarity = analysis.polarity            polarity_list.append(polarity)            numbers_list.append(number)number = number + 1

Мы берем этот код и, используя для петля и попробуйте Заявление, мы повторяем его по количеству твитов для поиска ключевое слово.

for tweet in tweepy.Cursor(api.search, keyword, lang="en").items(numberOfTweets):        try:            analysis = TextBlob(tweet.text)            analysis = analysis.sentiment            polarity = analysis.polarity            polarity_list.append(polarity)            numbers_list.append(number)            number = number + 1
except tweepy.TweepError as e:            print(e.reason)
except StopIteration:            break

Графический разброс

Для того, чтобы график нашего разброса с помощью Матплотлиб, Сначала мы должны определить ось

axes = plt.gca()axes.set_ylim([-1, 2])

а затем постройте наши списки данных.

plt.scatter(numbers_list, polarity_list)

Ключевая информация отображается в коробке. Для того, чтобы показать общие настроения твитов, которые мы собрали, мы рассчитаем среднее по всем собранным твитам. Кроме того, поскольку мы отображаем настроение в определенное время, мы хотим отобразить дату и время.

averagePolarity = (sum(polarity_list))/(len(polarity_list))averagePolarity = "{0:.0f}%".format(averagePolarity * 100)time  = datetime.now().strftime("At: %H:%M\nOn: %m-%d-%y")
plt.text(0, 1.25, "Average Sentiment:  " + str(averagePolarity) + "\n" + time, fontsize=12, bbox = dict(facecolor='none', edgecolor='black', boxstyle='square, pad = 1'))

Для заголовка мы можем использовать это

plt.title("Sentiment of " + keyword + " on Twitter") plt.xlabel("Number of Tweets")plt.ylabel("Sentiment")

И, наконец, использовать Сюжет. Show () отображать график.

Пример

Тестирование этого для моего Бесплатный WTR Бот, настроение было высоким небом!

Что касается Дональд Трамп, Я не могу сказать то же самое:

Вот Полный исходный код на github.