
Содержание статьи
Лукас Кохорст
После создания бота Free Wtr с помощью Tweepy и Python и этого кода я хотел увидеть, как пользователи Twitter воспринимают бота и какие у них настроения. Поэтому я создал простую программу анализа данных, которая берёт заданное количество твитов, анализирует их и отображает данные на диаграмме рассеяния.

Настройка
Мне пришлось установить несколько пакетов, чтобы создать это: Твипи, Tkinter, Textblob и matplotlib. Вы можете установить каждый из них с помощью менеджера пакетов pip. Например:
pip install tweepy
или вы можете клонировать в репозитории Github таким образом.
git clone 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)
Создание GUI
Для интерфейса мы будем использовать две метки: одну для Поиск а другой для объем выборки или количество твитов для анализа. Нам также понадобится кнопка «Отправить», чтобы по нажатию мы могли вызвать наш 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)
Чтобы компьютер знал, что GUI на экране, нам нужно пакет наши этикетки, а затем петля корневой дисплей.
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, мы можем найти настроения каждого твита и сохранить их в переменной polarity
. Затем мы можем добавить эту переменную к нашей polarity_list
вместе с добавлением номера в наш number_list
.
analysis = TextBlob(tweet.text)analysis = analysis.sentimentpolarity = analysis.polarity polarity_list.append(polarity) numbers_list.append(number)number = number + 1
Берем этот код и, используя a for
петля и try
мы проверяем количество твитов для поиска ключевое слово.
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
Графическая диаграмма рассеяния
Чтобы построить график нашей диаграммы рассеяния с помощью matplotlib, сначала мы должны определить ось
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")
и наконец использовать plot.show()
чтобы отобразить график.

Пример
Проверяю это для себя Бесплатный Wtr бот, настроение было заоблачное!

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

Вот полный исходный код на Github.