Hoe je een Twitter-sentimentanalysator in Python bouwt met TextBlob

Deze blog is gebaseerd op de video Twitter Sentiment Analysis - Learn Python for Data Science # 2 door Siraj Raval. In deze challenge bouwen we een sentimentanalysator die controleert of tweets over een onderwerp negatief of positief zijn. Hiervoor maken we gebruik van de Python-bibliotheek textblob.

Sentimentanalyse, ook wel opiniemining of emotie-AI genoemd, is het proces om te bepalen of een stuk geschreven is positief, negatief of neutraal. Een veelvoorkomende toepassing van deze technologie is om te ontdekken hoe mensen over een bepaald onderwerp denken. Sentimentanalyse wordt op grote schaal toegepast op recensies en sociale media voor een verscheidenheid aan toepassingen.

Sentimentanalyse kan op veel verschillende manieren worden uitgevoerd. Veel merken en marketeers gebruiken op zoekwoorden gebaseerde tools die gegevens (zoals sociaal, nieuws, recensie, blog, enz.) Classificeren als positief / negatief / neutraal.

Geautomatiseerde sentiment-tagging wordt meestal bereikt door middel van woordenlijsten. Vermeldingen van 'haat' zouden bijvoorbeeld negatief worden getagd.

Er zijn twee benaderingen voor sentimentanalyse.

1. Lexicon-gebaseerde methoden

2. Op machine learning gebaseerde methoden.

In dit probleem zullen we een op Lexicon gebaseerde methode gebruiken.

Op Lexicon gebaseerde methoden definiëren een lijst van positieve en negatieve woorden, met een valentie - (bijv. 'Leuk': +2, 'goed': +1, 'verschrikkelijk': -1,5 enz.). Het algoritme zoekt een tekst op om alle bekende woorden te vinden. Het combineert vervolgens hun individuele resultaten door optelling of middeling. Sommige extensies kunnen enkele grammaticale regels controleren, zoals ontkenning of sentimentmodifier (zoals het woord "maar", dat sentimentwaarden in tekst anders weegt om het einde van tekst te benadrukken).

Laten we nu de analysator bouwen.

Twitter API

Voordat we beginnen met coderen, moeten we ons registreren voor de Twitter API //apps.twitter.com/. Hier moeten we een app registreren om verschillende sleutels te genereren die aan onze API zijn gekoppeld. De Twitter API kan worden gebruikt om veel acties uit te voeren, zoals maken en zoeken.

Nu we de app hebben gemaakt, kunnen we beginnen met coderen.

We moeten twee pakketten installeren:

pip install tweepy

Dit pakket wordt gebruikt voor het afhandelen van de Twitter API.

pip installeer textblob

Dit pakket wordt gebruikt voor de sentimentanalyse.

sentiment_analyzer.py

import tweepyfrom textblob import TextBlob

We moeten de variabelen declareren om de verschillende sleutels op te slaan die zijn gekoppeld aan de Twitter API.

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

De volgende stap is om een ​​verbinding te maken met de Twitter API door middel van tweepy met deze tokens.

Tweepy

Tweepy ondersteunt OAuth-authenticatie. Verificatie wordt afgehandeld door de klasse tweepy.OAuthHandler .

Een OAuthHandler- instantie moet worden gemaakt door een consumententoken en geheim door te geven.

Op deze auth-instantie zullen we een functie set_access_token aanroepen door het access_token en access_token_secret door te geven.

Ten slotte maken we onze tweepy API-instantie door deze auth-instantie door te geven aan de API-functie tweepy.

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

We kunnen nu op elk onderwerp op Twitter zoeken met behulp van de zoekmethode van de API.

public_tweets = api.search(‘Dogs’)

Nu krijgen we alle tweets over het onderwerp 'Honden'. We kunnen sentimentanalyse uitvoeren met behulp van het textblob van de bibliotheek.

TextBlob

TextBlob is een Python (2 en 3) bibliotheek voor het verwerken van tekstuele gegevens. Het biedt een eenvoudige API om te duiken in veelgebruikte natuurlijke taalverwerkingstaken (NLP), zoals tagging van deel-van-spraak, extractie van zelfstandig naamwoord-zinnen, sentimentanalyse, classificatie, vertaling en meer.

Een tekstblok kan op de volgende manier worden aangemaakt (voorbeeld, en geen onderdeel van de originele code):

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

En tokenisatie kan worden uitgevoerd door de volgende methoden:

words : geeft de woorden van tekst terug

gebruik:

example.words

zinnen: geeft de zinnen van tekst terug

gebruik:

example.sentences

Part-of-speech-tagging

Deel-van-spraak-tags zijn toegankelijk via de eigenschap tags .

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

Sentiment analyse

De eigenschap sentiment retourneert een tupel met de naam Sentiment (polariteit, subjectiviteit). De polariteitsscore is een float binnen het bereik [-1,0, 1,0]. De subjectiviteit is een vlotter binnen het bereik [0,0, 1,0] waar 0,0 zeer objectief is en 1,0 zeer subjectief.

Nu terug naar de code.

We kunnen de array publice_tweets herhalen en het sentiment van de tekst van elke tweet controleren op basis van de polariteit.

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 voeren we de code uit met behulp van het volgende:

python sentiment_analyzer.py

en we krijgen de output:

We kunnen zien dat het sentiment van de tweet wordt weergegeven.

Dit is een voorbeeld van hoe sentimentanalyse kan worden uitgevoerd op gegevens van sociale media zoals Twitter. Ik hoop dat je het nuttig vindt!

Find the code at //github.com/amkurian/twitter_sentiment_challenge