Que pensent les gens du vaccin COVID?


Comprendre ce que les gens pensent d’un produit n’a jamais été aussi simple qu’aujourd’hui. Les utilisateurs des plateformes de médias sociaux comme Twitter et Facebook fournissent une grande quantité de données que les entreprises peuvent utiliser pour déterminer l’opinion du public sur leurs produits. Twitter est une plate-forme particulièrement efficace pour obtenir ces informations, car les gens partagent régulièrement des opinions sur une grande variété de sujets et d’industries. Lors de la collecte de ces informations, les entreprises peuvent effectuer une analyse des sentiments pour prendre des décisions sur la manière d’améliorer leurs produits et services.

L’analyse des sentiments est une tâche basée sur l’IA qui utilise le traitement du langage naturel pour comprendre le sentiment, l’émotion ou le ton exprimé dans un texte. Il a un large éventail d’applications, y compris les prévisions boursières, l’analyse de produits, la surveillance des médias sociaux et bien plus encore.

La collecte de données textuelles sur Twitter à l’aide de Python est relativement simple grâce à un wrapper Twitter appelé Tweepy. Lors de la création d’un compte de développeur utilisateur, les utilisateurs de Twitter peuvent extraire des données telles que leurs propres tweets, les tweets de leurs abonnés / utilisateurs qu’ils suivent et tout autre tweet accessible au public. Une fois que vous avez fait cela, la bibliothèque de sentiments de texte Python, TextBlob, vous permet de générer facilement des scores de sentiment à partir de ces tweets.

Une application intéressante de l’analyse des sentiments est de considérer les tweets liés aux vaccins COVID produits par Pfizer, Moderna et Johnson & Johnson. Nous pouvons effectuer une analyse simple pour comparer les sentiments négatifs entre ces trois marques.

Analyse des sentiments

L’analyse des sentiments est une tâche basée sur l’IA qui utilise le traitement du langage naturel pour comprendre le sentiment, l’émotion ou le ton exprimé dans un texte. Il a un large éventail d’applications, y compris les prévisions boursières, l’analyse de produits, la surveillance des médias sociaux et bien plus encore.

Plus de Sadrach PierreUn guide complet de visualisation des données avec Matplotlib et Seaborn

Créer une application Twitter

Pour démarrer avec Tweepy, la première chose à faire est de créer un compte Twitter si vous n’en avez pas déjà un. Une fois votre compte configuré, vous devrez demander un compte de développeur utilisateur, ce que vous pouvez faire ici. Vous devriez voir la page suivante:

analyse-des-sentiments-covid
Image: Capture d’écran de l’auteur.

Une fois que vous avez terminé la demande et qu’elle a été approuvée, vous devez créer une application Twitter. Les étapes pour ce faire sont décrites ici.

analyse-des-sentiments-covid
Image: Capture d’écran de l’auteur.

Maintenant que vous avez créé l’application, vous devriez avoir généré des clés de consommateur et des jetons d’accès. Ce sont des chaînes de chiffres et de lettres aléatoires que vous utiliserez pour permettre à Twitter d’authentifier vos demandes de tweets, sans votre nom d’utilisateur et votre mot de passe Twitter. Gardez-les secrets. Vous pouvez trouver les étapes pour accéder à vos clés et jetons ici. Vous devriez voir la page suivante:

sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Authentification de l’accès Twitter

La prochaine chose que vous devez faire est d’installer le package Tweepy. Dans une ligne de commande, vous pouvez exécuter la commande suivante pour l’installation:

pip install tweepy 

Ensuite, ouvrez un script Python et importez quelques packages qui vous seront utiles tout au long du didacticiel. Le package Tweepy tirera les tweets, TextBlob effectuera une analyse des sentiments, la bibliothèque Pandas stockera les résultats dans un bloc de données et Seaborn et Matplotlib permettront la visualisation des données:

import tweepy

from textblob import TextBlob

import pandas as pd  

import seaborn as sns

import matplotlib.pyplot as plt 

Ensuite, stockez vos clés et jetons dans des variables. Notez qu’ici, j’utilise de fausses clés et de faux jetons. Vous devez cependant utiliser vos clés et jetons réels:

consumer_key = '5GBi0dCerYpy2jJtkkU3UwqYtgJpRd'

consumer_secret="Q88B4BDDAX0dCerYy2jJtkkU3UpwqY"

access_token = 'X0dCerYpwi0dCerYpwy2jJtkkU3U'

access_token_secret="kly2pwi0dCerYpjJtdCerYkkU3Um"

Next, authenticate access to your Twitter account by defining an auth object. 

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)

auth.set_access_token(access_token, access_token_secret)

Maintenant que votre accès est authentifié, vous pouvez définir une instance authentifiée d’un objet Tweepy. En passant l’objet auth dans la méthode API de l’objet Tweepy, vous devriez pouvoir accéder aux tweets:

api = tweepy.API(auth)

Extraction de tweets à l’aide de Tweepy

Vous êtes maintenant en forme pour commencer à tirer des tweets. Pour ce faire, vous utiliserez la méthode du curseur de l’objet Tweepy. Vous devez transmettre les paramètres api.search (pour spécifier que vous recherchez par mot-clé), un mot-clé de chaîne et le nombre de résultats que vous souhaitez extraire.

Boucle sur l’objet renvoyé par la méthode du curseur et affiche les résultats à l’aide d’une instruction print. Tirez 1000 résultats pour le mot-clé « Pfizer » et limitez également les résultats aux tweets en anglais et supprimez les retweets (une capture d’écran tronquée de la sortie apparaît ci-dessous):

for tweet in tweepy.Cursor(api.search,q='Pfizer', count=1000).items(1000):

        if (not tweet.retweeted) and ('RT @' not in tweet.text):

            if tweet.lang == "en":

                print(tweet)
sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Bien que cette sortie contienne des informations utiles, elle contient également beaucoup de détails que vous n’utiliserez pas. Pour extraire uniquement des textes de tweet, vous pouvez utiliser l’attribut text de chaque objet tweet:

for tweet in tweepy.Cursor(api.search,q='Pfizer', count=1000).items(1000):

        if (not tweet.retweeted) and ('RT @' not in tweet.text):

            if tweet.lang == "en":

                print(tweet.text)
sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Vous pouvez également utiliser les attributs created_at et user.name pour accéder respectivement à la date et à l’heure des tweets et aux noms d’utilisateur:

for tweet in tweepy.Cursor(api.search,q='pfizer', count=1000).items(1000):

        if (not tweet.retweeted) and ('RT @' not in tweet.text):

            if tweet.lang == "en":

                print(tweet.text)

                print(tweet.user.name)

                print(tweet.created_at)

Ensuite, initialisez les listes qui stockeront les valeurs des dates, des noms d’utilisateur et des tweets, puis ajoutez les valeurs à chaque liste:

twitter_users = []

tweet_time = []

tweet_string = [] 

for tweet in tweepy.Cursor(api.search,q='pfizer', count=1000).items(1000):

        if (not tweet.retweeted) and ('RT @' not in tweet.text):

            if tweet.lang == "en":

                twitter_users.append(tweet.user.name)

                tweet_time.append(tweet.created_at)

                tweet_string.append(tweet.text)

Enfin, stockez cette logique dans une fonction qui prend un mot-clé en entrée et renvoie une trame de données de tweets, de dates et de noms d’utilisateur. Vous pouvez ensuite écrire cette trame de données dans un fichier csv à l’aide de la méthode Pandas to_csv:

def get_related_tweets(key_word):

    twitter_users = []

    tweet_time = []

    tweet_string = [] 

    for tweet in tweepy.Cursor(api.search,q=key_word, count=1000).items(1000):

            if (not tweet.retweeted) and ('RT @' not in tweet.text):

                if tweet.lang == "en":

                    twitter_users.append(tweet.user.name)

                    tweet_time.append(tweet.created_at)

                    tweet_string.append(tweet.text)

    df = pd.DataFrame({'name':twitter_users, 'time': tweet_time, 'tweet': tweet_string})

    df.to_csv(f"{key_word}.csv", index=False)

    return df 

Vous pouvez désormais appeler votre fonction avec le mot-clé «Pfizer». Cela devrait générer un fichier csv appelé «pfizer.csv», que vous pouvez lire et stocker dans une trame de données:

get_related_tweets('pfizer')

df = pd.read_csv("pfizer.csv")

Now  display the first five rows of data:

print(df.head())
sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Le texte du tweet est organisé de manière appropriée dans la colonne tweet. Vous pouvez maintenant utiliser le package TextBlob pour générer des sentiments à partir de ces tweets.

Analyse des sentiments des tweets

Le package Python TextBlob générera des scores de sentiment à partir de ce texte. C’est un excellent package pour les scientifiques de données qui commencent tout juste avec le traitement du langage naturel et l’analyse des sentiments. Vous pouvez générer des scores de sentiment avec quelques lignes de code, ce qui rend le package facile à utiliser. Mieux encore, TextBlob ne nécessite pas une compréhension approfondie des mathématiques derrière la génération de ces scores afin que vous puissiez commencer assez facilement. Installez le package en exécutant la commande suivante dans la ligne de commande:

pip install textblob

TextBlob a une méthode appelée sentiment.polarity qui génère des scores de sentiment de un négatif à un positif. Les valeurs négatives correspondent à une émotion négative, les valeurs positives correspondent à une émotion positive et une valeur de zéro est neutre.

Nous pouvons appliquer la méthode sentiment.polarity de l’objet TextBlob à la colonne tweet de notre bloc de données et stocker les résultats dans une nouvelle colonne appelée sentiment:

df['sentiment'] = df['tweet'].apply(lambda tweet: TextBlob(tweet).sentiment.polarity)

print(df.head())
sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Pour rendre la génération de score de sentiment plus réutilisable pour chaque mot-clé, au lieu de lire dans le fichier, définissez une fonction qui appelle la fonction get_related_tweets:

def get_sentiment(key_word):

    df = get_related_tweets(key_word)

    df['sentiment'] = df['tweet'].apply(lambda tweet: TextBlob(tweet).sentiment.polarity)

    print(df.head())

Maintenant, si vous appelez la fonction avec «Moderna», vous devriez obtenir une nouvelle trame de données (ainsi que le fichier csv pour une utilisation future):

get_sentiment('Moderna')
sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Vous pouvez compter les tweets de sentiment négatifs et positifs en filtrant le bloc de données en fonction de la valeur du sentiment. Créez des cadres de données de sentiment négatifs et positifs (notez que «…» représente du code tronqué):

def get_sentiment(key_word):

...

    df_pos = df[df['sentiment'] > 0.0]

    df_neg = df[df['sentiment'] < 0.0]

Passez ces cadres de données dans la méthode intégrée len () pour compter les sentiments négatifs et positifs:

def get_sentiment(key_word):

...

    print("Number of Positive Tweets about {}".format(key_word), len(df_pos))

    print("Number of Negative Tweets about {}".format(key_word), len(df_neg))

Now, call this function with “Pfizer,” “Moderna” and “Johnson & Johnson”:

get_sentiment('Moderna')

get_sentiment('Pfizer')

get_sentiment('Johnson & Johnson')
sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Notez que cette méthode prend un échantillon de 1000 tweets au moment où le script s’exécute. Cela supprime également le nombre de tweets neutres.

Enfin, visualisez les résultats sous forme de graphiques à barres pour chaque marque à l’aide de Matplotlib et Seaborn:

def get_sentiment(key_word):

...

    sns.set()

    labels = ['Postive', 'Negative']

    heights = [len(df_pos), len(df_neg)]

    plt.bar(labels, heights, color="navy")

    plt.title(key_word)
sentiment-de-vaccin-covid
Image: Capture d’écran de l’auteur.

Dans les trois marques, il y a plus de tweets de sentiments positifs que négatifs. Moderna a 43% de sentiments négatifs, Pfizer 28,8% de sentiments négatifs et Johnson et Johnson 28,5% de sentiments négatifs.

Je soulignerai ici que ces résultats ne sont pas concluants car ils sont dérivés d’une taille d’échantillon relativement petite. Une collection d’un plus grand corpus de tweets pour chaque marque générera sûrement des résultats plus significatifs sur le plan statistique. À savoir, nous aurions besoin d’augmenter la taille de l’échantillon pour garantir que ces résultats ne sont pas dus au hasard. Pourtant, nous pouvons commencer à avoir une idée des attitudes grâce à cette analyse.

Commencez à analyser dès aujourd’hui

Maintenant que vous avez les compétences nécessaires pour commencer l’analyse des sentiments, vous pouvez continuer à suivre et affiner vos résultats à mesure que les attitudes à l’égard des vaccins évoluent. Une analyse intéressante serait de collecter des tweets sur plusieurs jours, semaines ou mois pour voir comment les sentiments évoluent au fil du temps.

L’analyse des sentiments est un moyen utile d’extraire des informations significatives sur les émotions et le ton du texte. Bien que dans cet article, nous n’ayons pris en compte que les mots-clés liés aux vaccins COVID, les méthodes décrites ici peuvent être appliquées à n’importe quel secteur vertical où les opinions des consommateurs sont précieuses. Par exemple, toute personne intéressée par l’analyse boursière pourrait facilement extraire des tweets sur l’action Tesla, puis générer des scores de sentiment. Ces scores peuvent ensuite servir d’entrées pour des modèles statistiques qui prédisent la direction du cours des actions.

Le package Tweepy permet aux utilisateurs de Twitter ayant une certaine connaissance de Python d’extraire assez facilement des textes sur n’importe quel sujet d’intérêt. Ces données peuvent ensuite être facilement structurées dans une trame de données et conservées pour une utilisation ultérieure. De plus, le package TextBlob permet aux utilisateurs d’effectuer rapidement une analyse des sentiments sur du texte, que ce soit des tweets ou autre, sans beaucoup de connaissances en traitement du langage naturel. D’autres méthodes de génération de scores de sentiment sont très mathématiquement impliquées et souvent inaccessibles à ceux qui ne connaissent pas les méthodes PNL.

La combinaison du package Tweepy et TextBlob permet aux développeurs Python qui commencent tout juste avec le traitement du langage naturel d’extraire des informations de textes de manière rapide et facile à comprendre. En plus de l’analyse que nous avons effectuée, les utilisateurs peuvent effectuer une analyse des sentiments au niveau de l’état de chacun de ces mots-clés. Ces analyses peuvent révéler des biais de sentiment intéressants au niveau de l’État s’ils existent.

En outre, les utilisateurs peuvent collecter des données pour un mot-clé au fil du temps et analyser comment le sentiment évolue dans le temps. Une variété de problèmes intéressants peuvent être élaborés et résolus à l’aide de ces outils. Tweepy et TextBlob sont inestimables pour les data scientists qui se mouillent les pieds avec le traitement du langage naturel et l’analyse de texte.

Continue d’apprendreUn guide complet de Scikit-Learn



Publié le
Catégorisé comme Naruto

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *