[Data & crise] Saison #1 E3 — Super Parrot reconnaît vos sentiments

Nadia Zabeti
INVYO
Published in
5 min readFeb 23, 2021

Vous savez maintenant que Super Parrot sait transformer de la donnée brute en nuage de mots-clés (épisode 2) 👇

Ce que vous ne savez pas encore, c’est que Super Parrot a un autre super pouvoir… Il a beau être un perroquet, en exerçant sa grande capacité d’observation il a appris au fil de ses voyages migratoires à détecter les sentiments humains.

La richesse et la finesse des sentiments humains sont une panoplie qu’il apprend à maîtriser : pour le moment Super Parrot se contente de distinguer le “négatif” du “positif” et du “neutre”, et on va vous montrer en quoi cela est déjà très chouette !

Pour commencer à vous montrer son talent, Super Parrot choisit d’abord de s’intéresser à l’entreprise Pfizer :

Page d’accueil de l’entreprise Pfizer (PFE) sur Stocktwits

Il choisit la première entreprise ayant déployé le vaccin contre la covid-19, et suit son cours sur Stocktwits. Qu’est-ce-que Stocktwits ? En quelques mots, c’est une plateforme similaire à Twitter, dont le périmètre est focalisé sur les marchés boursiers.

Il en récolte les réactions associées ou “twits”. Les twits ressemblent aux “tweets” de Twitter (ce sont de courts messages), mais ils ciblent exclusivement une entreprise. Combien de messages pour faire son analyse ? Super Parrot notre super lecteur en a récupéré… plus de 52 000 !

Exemple de twits

Il a choisi de focaliser son analyse sur la semaine englobant l’annonce de la mise sur le marché du vaccin Pfizer (21 décembre) : du 20 au 27 décembre.

Commençons par observer s’il y a eu des comportements significatifs suite à l’annonce de la mise en disponibilité du vaccin.

On observe une hausse très significative du nombre de twits le jour de l’annonce par l’ANSM

Place à l’analyse du sentiment ! Pour poursuivre, si vous avez suivi notre épisode #2, vous savez déjà ce que nous allons attaquer… Eh bien non, *c’était un piège* : nous n’allons pas pré-processer nos twits et nous allons vous expliquer pourquoi. La librairie VADER avec laquelle nous allons travailler est capable d’analyser précisément ce que nous lissons avec le pre-processing : les majuscules, les emojis, la ponctuation. Et elle gère d’elle-même les fameux “stopwords”.

Nous pouvons directement utiliser la librairie sur notre corpus de twits.

# installation de la librairie VADER!pip install vaderSentiment# import de l'outil d'analysefrom vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyzer = SentimentIntensityAnalyzer()
# application de l'outil aux twits récoltés sur Stocktwitsdf["VADER_sentiment"] = [analyzer.polarity_scores(twit) for twit in df["content"]]# extraction du "compound" ou score permettant de mesurer le sentiment associé au twitdf["compound"] = df["VADER_sentiment"].apply(lambda x: x.get("compound"))# affichage de 5 twits et de leur sentiment selon VADERfor twit in df["content"][3122:3126]:
vs = analyzer.polarity_scores(twit)
print("{:-<65} {}".format(twit, str(vs)))
$PFE 👌👌---------------------------------------------------------- {'neg': 0.0, 'neu': 0.075, 'pos': 0.925, 'compound': 0.9055}$PFE Good price action. Love the dips and strong buying on the dips. Looks like a reversal to me {'neg': 0.0, 'neu': 0.538, 'pos': 0.462, 'compound': 0.9169} Happy holidays everyone enjoy stay safe 🐝🐝🐝🐝🐝 {'neg': 0.0, 'neu': 0.586, 'pos': 0.414, 'compound': 0.9545}$PFE WTF WTF WTF WTF WTF WTF .. This crap is worse than Ibio...-- {'neg': 0.846, 'neu': 0.154, 'pos': 0.0, 'compound': -0.9881}$PFE 🎄----------------------------------------------------------- {'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.0}

A votre avis, sur une base quotidienne, y’a-t-il plus de twits positifs que négatifs ? Le contraire ? Voilà la réponse :

Répartition des twits en fonction de leur “compound” : plus il est proche de 1 plus le twit est positif, plus il est proche de -1 plus le twit est négatif

Plutôt équilibré non ? :) Faisons maintenant un zoom en catégorisant le “compound” et en attribuant le label “positive” aux compounds supérieurs à 0, “negative” aux compounds inférieurs à 0, et “neutral” pour les compounds égaux à 0.

Répartition journalière des twits en fonction de leur sentiment VADER

Stocktwits permet à ses utilisateurs de qualifier leur publication : “Bullish” (l’équivalent de “positive”), “Bearish” (“negative”) ou “Neutral” (l’utilisateur ne souhaite pas qualifier son message).

Répartition journalière des twits en fonction de la labellisation utilisateur sur Stocktwits

Non, vous ne voyez pas double : les 2 analyses de sentiment sont globalement concordantes :-)

Avant de se quitter, observons sur un même graphique l’évolution du cours de Pfizer et l’évolution du “compound” de l’analyse de sentiment VADER

Sentiment VS cours boursier de Pfizer

Les deux courbes se superposent sur la majorité de la période étudiée, montrant une similarité de comportement en termes de sentiment associé aux twits, et de cours boursier sur ces périodes.

Néanmoins, on constate qu’il y a deux grandes périodes (autour du 6 décembre et autour du 20 décembre) où sentiment et cours sont complètement décorrélés, sans qu’un évènement particulier se soit produit.

Ce graphique nous permet de mesurer les nuances qu’une analyse à plus grande échelle ne pourrait déceler : les 2 phénomènes étudiés ont des imbrications plus complexes qu’il n’y paraît.

En parlant de complexité, Super Parrot s’élance vers sa prochaine aventure qui sera légèrement plus technique mais il fait déjà tout son maximum pour vous rendre ça clair comme un ciel sans nuage :-). A dans deux semaines !

--

--