Ça ne vous aura pas échappé, chaque tweets d’Elon Musk a le pouvoir de chambouler les prix du marché. Alors comment coder une IA capable de les analyser rapidement ?
Les fans d’Elon Musk l’ont compris, quand il tweet à propos d’une crypto-monnaie, les cours s’affolent !
De l’autre côté du terrain, on a des IA de NLP (traitement de texte) qui sont de plus en plus performantes. Certaine allant même jusqu’à pouvoir engager des discussions avec vous.
Les plus crypto-compatibles des Data-Scientists auront compris qu’il y a un coup à jouer en fusionnant l’IA à l’analyse de tweets.
Ça tombe bien ! C’est le tutoriel qu’on vous propose dans cet article…
Première étape : Récupérer les tweets
🐦 Le problème Twitter
En Python il existe des librairies de Web Scraping.
Ces librairies permettent de récupérer les textes de pages internet.
Idéal pour l’algorithme que nous voulons créer !
Le problème, c’est que Twitter ne laisse pas n’importe qui regarder le contenu de ses pages internet.
En fait, pour extraire des tweets, il nous faut avoir accès à l’API twitter. C’est-à-dire avoir des identifiants unique et utilisable uniquement par une personne.
Mais nous, on veut un algorithme facilement utilisable et qui ne nous pose aucun problème à rallonge.
On va donc contourner ce problème d’API…
🥷 Contourner Twitter
Pour contourner l’API Twitter, on va devoir être plus malin que l’oiseau bleu.
Sur internet, il existe des sites qui reproduisent exactement le contenu de Twitter.
C’est ce qu’on appelle des Viewers et ça existe pour de nombreux autres réseaux sociaux.
Eh bien, la solution est simple ! Au lieu de faire du Web Scraping directement sur Twitter, on va le contourner en se focalisant sur un site Viewer qui lui, nous laissera accéder à son contenu.
Dans ce premier bout de code, on utilise la librairie request pour Web Scraper notre lien internet (https://twstalker.com/elonmusk) :
import requests
URL = "https://twstalker.com/elonmusk"
page = requests.get(URL)
Maintenant, nous avons la page de tweet d’Elon Musk au format HTML.
Pour parcourir plus facilement cette page HTML, on utilise BeautifulSoup.
C’est une librairie qui nous permet d’extraire facilement du contenu d’une page HTML :
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.content, "html.parser")
Ci-dessus, on a transformé notre page HTML au format BeautifulSoup.
On va ensuite pouvoir chercher uniquement les balises (les éléments de cette page) qui nous intéressent :
job_elements = soup.find_all("p")
Ça y est, nous avons récupérer les tweets au format HTML.
Conseil pour mieux comprendre : N’hésiter pas à afficher les sorties de chaque briques de code. Cela vous aidera à mieux comprendre ce qu’il se passe dans notre algorithme.
Ici, on va extraire seulement le texte de chacun de ces tweets. En fait on passe du format HTML au format string Python :
tweets = []
for job_element in job_elements:
element = job_element.text
tweets.append(element)
#remove 'View a Private Twitter Instagram Account' from the list
tweets = tweets[1:]
On a maintenant la liste des 20 derniers tweets d’Elon Musk 🔥
Vous pouvez déjà faire votre propre analyse en les affichant :
print(tweets)
Cependant, les développeurs sont connus pour être flemmard. Déjà qu’on ne veut pas prendre la peine d’aller sur Twitter, on ne veut encore moins prendre le temps de décortiquer chacun des tweets d’Elon Musk.
Non, ce qu’on veut, c’est qu’une IA travaille pour nous !
Deuxième étape : Programmer une IA
🤖 Analyser les tweets
Pour analyser du texte avec Python, une librairie particulièrement efficace existe : NLTK.
Avec elle, on va pouvoir filtrer tous les mots sans intérêt d’un texte pour n’en garder que le meilleur !
On va commencer par importer la librairie et installer les dépendances dont nous avons besoin :
import nltk
nltk.download('averaged_perceptron_tagger')
nltk.download('punkt')
Ensuite, une étape obligatoire dans tout IA traitant du texte : transformer les phrases en tokens.
Actuellement, nous avons des listes de tweets. Pour qu’une IA les analyses, il nous faut des listes de mots.
On va donc transformer chaque tweets en liste de mots. C’est la tokenization :
Au fait, si ton objectif est d'apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.
7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :
- Planifie ton apprentissage
- Structure tes projets
- Développe tes algorithmes d’Intelligence Artificielle
J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.
Pour y accéder, clique ici :
À présent, on peut revenir à ce que je mentionnais précédemment.
from nltk.tokenize import word_tokenize
tweets_tokenized = []
for tweet in tweets:
tokens = nltk.word_tokenize(tweet)
for token in tokens:
tweets_tokenized.append(token)
Ca y est, on a une liste qui contient uniquement des tokens.
Dans un projet classique de NLP, il aurait fallut nettoyer ce texte : enlever la ponctuation, les emojis, etc.
Mais après réflexion, on a considéré que ce nettoyage ne doit pas s’appliquer au tweet.
Effectivement, dans le langage internet, pour parler d’une compagnie ou d’une crypto-monnaie, il est fréquent d’utiliser des emojis.
Ainsi, sur Twitter, les smileys ne sont pas forcément indicateur d’une émotion, mais au contraire peuvent être vecteur d’informations importantes… 👻
Du coup, pas de nettoyage de texte pour cet algo !
On utilise ensuite le module tag de NLTK.
Il va nous permettre de comprendre la valeur de chaque mot : adjectif, preposition, nom, etc
from nltk.tag import pos_tag
result = nltk.pos_tag(tweets_tokenized)
🏆 Afficher les résultats
Si vous testez d’afficher la variable result tel quel, il se peut que vous n’ayez aucune idée de ce que vous avez sous les yeux.
Le résultat est une liste de tuples de tokens et de tags.
En fait NLTK, utilise des abréviations, des tags, pour décrire la valeur des mots.
Dans un précédent article nous avons décrit chacune de ces abréviations.
Ici, les tags qui nous intéressent sont les ‘NNP’ et les ‘NNPS’ : les noms propres singuliers et les noms propres pluriels.
On va donc filter le résultat en affichant seulement les ‘NNP’ et les ‘NNPS’ :
[word for (word, pos) in result if pos == 'NNP' or pos == 'NNPS']
Sortie : [‘Doge’, ‘Doge’, ‘Endurance’, ‘Hangar’, ‘Dragon’, ‘Wow’, ‘Tesla’, ‘Starbase’, ‘Tesla’, ‘Bee’, ‘Who’, ‘Truth’, ‘Hertz’, ‘Tesla’, ‘Autopilot’, ‘QA’, ‘Sorry’, ‘Tesla’, ‘FSD’, ‘QA’, ‘’’, ‘Internal’, ‘QA’, ‘Strange’, ‘Tesla’, ‘Wild’, ‘T1mes’]
Le résultat est tout de suite plus compréhensible !
Apparement Elon Musk parle beaucoup d’un certain ‘Doge’ en ce moment… va-t-il prendre de la valeur dans les prochaines minutes ?
Aller plus loin
Pour cette analyse de tweet, on aurait pu utiliser une autre libraire : spacy.
Cette librairie procure une analyse de texte plus détaillée.
Avec elle, on peut notamment extraire plus que les noms propres mais directement les noms d’entreprise.
Spacy est donc une option intéressante mais dans l’analyse de crypto-monnaie ses fonctionnalités ne marcheraient pas.
Ainsi, le mot Bitcoin serait prélevé comme nom de Société, notoriété oblige. Mais une crypto-monnaie comme le Dogecoin n’aurait pas le même traitement et passerait à la trappe.
Notre conseil est d’utiliser l’approche qui vous convient le mieux !
Et surtout n’hésitez pas à améliorer le code que nous venons de voir ensemble.
Pour les curieux du NLP et du traitement de texte en général, nous avons écrit un tutoriel détaillé pour l’analyse de sentiment en Machine Learning. C’est juste ici ! 😉
Aujourd’hui, c’est grâce au Deep Learning que les leaders de la tech peuvent créer les Intelligences Artificielles les plus puissantes.
Si tu veux approfondir tes connaissances dans le domaine, tu peux accéder à mon Plan d’action pour Maîtriser les Réseaux de neurones.
Un programme de 7 cours gratuits que j’ai préparé pour te guider dans ton parcours pour apprendre le Deep Learning.
Si ça t’intéresse, clique ici :
sources :
- Towardsdatascience – Named Entity Recognition
- Photo by Executium on Unsplash
Un dernier mot, si tu veux aller plus loin et apprendre le Deep Learning - j’ai préparé pour toi le Plan d’action pour Maîtriser les Réseaux de neurones.
7 jours de conseils gratuits d’un ingénieur spécialisé en Intelligence Artificielle pour apprendre à maîtriser les réseaux de neurones à partir de zéro :
- Planifie ton apprentissage
- Structure tes projets
- Développe tes algorithmes d’Intelligence Artificielle
J’ai basé ce programme sur des faits scientifiques, des approches éprouvées par des chercheurs mais également mes propres techniques que j'ai conçues au fil de mes expériences dans le domaine du Deep Learning.
Pour y accéder, clique ici :