de Lucas Kohorst

Analiza datelor de bază pe Twitter cu Python

După crearea Wtr gratuit bot folosind Tweepy și Python și acest codAm vrut o modalitate de a vedea cum percepeau utilizatorii Twitter botul și care era sentimentul lor. Așa că am creat un program simplu de analiză a datelor care ia un număr dat de tweets, le analizează și afișează datele într-un grafic scatter.

Analiza datelor de baza pe Twitter cu Python
Imagine credit.

Înființat

A trebuit să instalez câteva pachete pentru a crea acest lucru: Tweepy, Tkinter, Textblob și matplotlib. Puteți instala fiecare dintre acestea cu managerul de pachete pip. De exemplu:

pip install tweepy

sau puteți clona în depozitul Github astfel.

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

Apoi va trebui să creați un nou Piton fișier și importați următoarele pachete.

ad-banner
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

Acreditări Twitter

Acum trebuie să conectăm un cont Twitter la scriptul nostru. Dacă nu aveți deja unul, creați unul.

Mergi la apps.twitter.com și conectați-vă cu contul dvs. Creați o aplicație Twitter și generați o cheie de consum, un secret al consumatorului, un token de acces și un secret de token de acces.

Sub declarațiile de import, stocați acreditările în variabile și apoi utilizați al doilea bloc de cod pentru a vă autentifica contul cu 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)

Dacă doriți să testați pentru a vedea dacă contul dvs. este autentificat corect, puteți imprima pur și simplu numele dvs. de utilizator pe consolă.

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

Crearea interfeței grafice

Pentru interfață, vom folosi două etichete: una pentru căutare iar cealaltă pentru marime de mostra sau numărul de tweets de analizat. De asemenea, vom avea nevoie de un buton de trimitere, astfel încât, atunci când faceți clic, să-l putem apela getData funcţie.

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)

Pentru ca computerul să știe să păstreze interfața grafică pe ecran, trebuie ambalaj etichetele noastre și apoi buclă afișarea rădăcină.

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

Pur și simplu rulați acest cod, ar trebui să vedeți o fereastră care arată astfel:

1611531306 599 Analiza datelor de baza pe Twitter cu Python

Cu toate acestea, când textul este introdus în etichete sau în Trimite este apăsat butonul, nu se întâmplă nimic. Trebuie să colectăm datele.

Analizarea tweet-urilor

În primul rând, trebuie să introducem textul în etichete.

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

Acum suntem gata să codificăm getData funcţie. De acum înainte, tot codul se află în această funcție:

def getData():    #Code

Trebuie să folosim GetE1() și GetE2() funcții. Acestea ne păstrează căutare și marime de mostra în variabile pe care le putem parcurge.

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

Pentru a stoca datele noastre, putem folosi liste. O listă este pentru polaritatea (sau sentimentul) tweet-urilor, iar alta pentru numărul tweet-ului (astfel încât să putem grafica datele).

    polarity_list = []    numbers_list = []    number = 1

Numărul de tweets trebuie să fie declarat 1, deoarece valoarea implicită este 0.

Acum putem începe să iterăm prin tweet-uri și să le analizăm. Folosind TextBlob, putem găsi sentimentul fiecărui tweet și îl putem stoca într-o variabilă polarity . Putem apoi adăuga această variabilă la polarity_list împreună cu adăugarea numărului la number_list.

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

Luăm acest cod și, folosind un for bucla si try declarație, o repetăm ​​pe numărul de tweets pentru căutare cuvânt cheie.

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

Grafic Scatter Plot

Pentru a grafica graficul nostru de dispersie cu matplotlib, mai întâi trebuie să definim axa

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

și apoi trageți listele noastre de date.

plt.scatter(numbers_list, polarity_list)

Informațiile cheie sunt afișate într-o casetă. Pentru a arăta sentimentul general al tweet-urilor pe care le-am adunat, calculăm media tuturor tweet-urilor colectate. De asemenea, din moment ce afișăm sentimentul la o anumită oră, dorim să afișăm data și ora.

averagePolarity = (sum(polarity_list))/(len(polarity_list))averagePolarity = "{0:.0f}%".format(averagePolarity * 100)time  = datetime.now().strftime("At: %H:%MnOn: %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"))
1611531306 762 Analiza datelor de baza pe Twitter cu Python

Pentru titlu, putem folosi acest lucru

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

și în cele din urmă utilizați plot.show() pentru a afișa graficul.

1611531306 367 Analiza datelor de baza pe Twitter cu Python

Exemplu

Testarea asta pentru a mea Wtr gratuit bot, sentimentul era înalt!

1611531307 802 Analiza datelor de baza pe Twitter cu Python
Dimensiunea eșantionului de 250 de tweets

în ceea ce privește Donald Trump, Nu pot spune același lucru:

1611531307 790 Analiza datelor de baza pe Twitter cu Python

Aici este cod sursă complet pe Github.