Автор оригинала: 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.