Sådan oprettes en Twitter-sentimentanalysator i Python ved hjælp af TextBlob

Denne blog er baseret på videoen Twitter Sentiment Analysis - Learn Python for Data Science # 2 af Siraj Raval. I denne udfordring vil vi opbygge en sentimentanalysator, der kontrollerer, om tweets om et emne er negative eller positive. Vi bruger Python-bibliotekets tekstblob til dette.

Sentimentanalyse, også kaldet opinion mining eller emotion AI, er processen med at bestemme, om et skriv er positivt, negativt eller neutralt. En almindelig brugssag for denne teknologi er at opdage, hvordan folk føler sig om et bestemt emne. Sentimentanalyse anvendes bredt på anmeldelser og sociale medier til en række applikationer.

Sentimentanalyse kan udføres på mange forskellige måder. Mange mærker og marketingfolk bruger søgeordsbaserede værktøjer, der klassificerer data (dvs. sociale, nyheder, anmeldelse, blog osv.) Som positive / negative / neutrale.

Automatisk følelse af mærkning opnås normalt gennem ordlister. For eksempel vil omtale af 'had' blive mærket negativt.

Der kan være to tilgange til sentimentanalyse.

1. Leksikonbaserede metoder

2. Machine Learning-baserede metoder.

I dette problem bruger vi en lexiconbaseret metode.

Leksikonbaserede metoder definerer en liste over positive og negative ord med en valens - (f.eks. 'Pænt': +2, 'godt': +1, 'forfærdeligt': -1,5 osv.). Algoritmen slår en tekst op for at finde alle kendte ord. Derefter kombineres deres individuelle resultater ved at opsummere eller beregne et gennemsnit. Nogle udvidelser kan kontrollere nogle grammatiske regler, såsom negation eller sentimentmodifikator (som ordet "men", som vejer sentimentværdier i tekst forskelligt for at understrege slutningen af ​​teksten).

Lad os bygge analysatoren nu.

Twitter API

Før vi begynder at kode, skal vi registrere os til Twitter API //apps.twitter.com/. Her skal vi registrere en app for at generere forskellige nøgler tilknyttet vores API. Twitter API kan bruges til at udføre mange handlinger som oprettelse og søgning.

Efter at have oprettet appen kan vi begynde at kode.

Vi skal installere to pakker:

pip install tweepy

Denne pakke vil blive brugt til håndtering af Twitter API.

pip installer tekstblob

Denne pakke vil blive brugt til sentimentanalysen.

sentiment_analyzer.py

import tweepyfrom textblob import TextBlob

Vi er nødt til at erklære variablerne for at gemme de forskellige nøgler, der er knyttet til Twitter API.

consumer_key = ‘[consumer_key]’
consumer_key_secret = ‘[consumer_key_secret]’
access_token = ‘[access_token]’
access_token_secret = ‘[access_token_secret]’

Det næste trin er at oprette en forbindelse til Twitter API ved hjælp af tweepy med disse tokens.

Tweepy

Tweepy understøtter OAuth-godkendelse. Godkendelse håndteres af tweepy.OAuthHandler- klassen.

En OAuthHandler- forekomst skal oprettes ved at videregive et forbrugertoken og hemmelighed.

På denne godkendelsesinstans kalder vi en funktion set_access_token ved at videregive access_token og access_token_secret.

Endelig opretter vi vores tweepy API-forekomst ved at videregive denne godkendelsesinstans til API-funktionen af ​​tweepy.

auth = tweepy.OAuthHandler(consumer_key, consumer_key_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)

Vi kan nu søge på Twitter efter ethvert emne ved hjælp af API-søgemetoden.

public_tweets = api.search(‘Dogs’)

Nu får vi alle tweets relateret til emnet 'Hunde'. Vi kan udføre sentimentanalyse ved hjælp af bibliotekets tekstblob.

TextBlob

TextBlob er et Python (2 og 3) bibliotek til behandling af tekstdata. Det giver en simpel API til dykning i almindelige naturlige sprogbehandlingsopgaver (NLP), såsom tagging af del af tale, ekstraktion af navneordssætninger, sentimentanalyse, klassificering, oversættelse og mere.

En tekstblob kan oprettes på følgende måde (eksempel og ikke en del af den oprindelige kode):

example = TextBlob("Python is a high-level, general-purpose programming language.")

Og tokenisering kan udføres ved hjælp af følgende metoder:

ord : returnerer tekstens ord

brug:

example.words

sætninger: returnerer sætningerne i tekst

brug:

example.sentences

Mærkning af ordklasse

Du kan få adgang til del-af-tale-tags gennem tagsegenskaben .

wiki.tags[('Python', 'NNP'), ('is', 'VBZ'), ('a', 'DT'), ('high-level', 'JJ'), ('general-purpose', 'JJ'), ('programming', 'NN'), ('language', 'NN')]

Sentimentanalyse

Sentiment-ejendommen returnerer en navngivet tuple af formen Sentiment (polaritet, subjektivitet). Polaritetsscoren er en svømmer inden for området [-1,0, 1,0]. Subjektiviteten er en svømmer inden for området [0,0, 1,0] hvor 0,0 er meget objektiv og 1,0 er meget subjektiv.

Nu tilbage til koden.

Vi kan gentage arrayet publice_tweets og kontrollere følelsen af ​​teksten for hver tweet baseret på polariteten.

for tweet in public_tweets: print(tweet.text) analysis = TextBlob(tweet.text) print(analysis.sentiment) if analysis.sentiment[0]>0: print 'Positive' elif analysis.sentiment[0]<0: print 'Negative' else: print 'Neutral'

Nu kører vi koden ved hjælp af følgende:

python sentiment_analyzer.py

og vi får output:

Vi kan se, at følelsen af ​​tweeten vises.

Dette er et eksempel på, hvordan sentimentanalyse kan udføres på data fra sociale medier som Twitter. Jeg håber, du finder det nyttigt!

Find koden på //github.com/amkurian/twitter_sentiment_challenge