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.

Î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.
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:

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"))

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.

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

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

Aici este cod sursă complet pe Github.