Comment construire un pipeline d'analyse des sentiments dans les médias sociaux ?

L'analyse des sentiments sur les médias sociaux peut être très utile pour surveiller votre marque, vos concurrents ou tout autre sujet d'intérêt. Dans cet article, nous vous montrons comment construire un système qui écoute les médias sociaux comme Reddit, Hacker News, Linkedin, Twitter, etc., et qui effectue automatiquement une analyse de sentiment sur le contenu grâce à l'IA générative.

Analyse des sentiments dans les médias sociaux

Combiner l'écoute sociale et l'analyse des sentiments pour l'analyse des sentiments de la marque

L'écoute sociale consiste à prêter attention et à interpréter les conversations autour d'un certain nombre de sujets sur les plateformes de médias sociaux, les sites d'évaluation et d'autres canaux en ligne.

L'analyse des sentiments, quant à elle, est le processus d'identification et de catégorisation des opinions exprimées dans un texte comme étant positives, négatives ou neutres. Elle consiste à utiliser le traitement du langage naturel, l'analyse de texte et la linguistique informatique pour identifier, extraire, quantifier et étudier systématiquement les états affectifs et les informations subjectives.

Lorsque vous combinez l'écoute sociale et l'analyse du sentiment, vous pouvez suivre et analyser le sentiment exprimé dans les conversations relatives à votre marque ou à vos concurrents. C'est ce que l'on appelle l'"analyse du sentiment de la marque". L'analyse du sentiment de marque vous permet de comprendre automatiquement ce que les consommateurs pensent de votre marque ou de vos concurrents, d'identifier les points à améliorer, d'intervenir dans la bonne conversation sur les médias sociaux pour engager le dialogue avec des clients potentiels et de prendre des décisions fondées sur des données afin d'améliorer la réputation de votre marque et la fidélité de vos clients.

Construire une plateforme d'écoute sociale

Pour créer une plateforme d'écoute sociale, vous devez vous connecter à une plateforme de médias sociaux et récupérer tous les nouveaux messages et commentaires contenant les mots-clés que vous souhaitez surveiller.

Il est plus facile d'y parvenir si la plateforme que vous envisagez de surveiller dispose d'une API. Par exemple, Reddit dispose d'une API que vous pouvez facilement utiliser. Voici une requête cURL simple qui récupère les 100 derniers messages Reddit :

curl https://www.reddit.com/r/all/new/.json?limit=100

Voici une réponse typique renvoyée par leur API :

{
    "kind": "Listing",
    "data": {
        "after": "t3_1asad4n",
        "dist": 100,
        "modhash": "ne8fi0fr55b56b8a75f8075df95fa2f03951cb5812b0f9660d",
        "geo_filter": "",
        "children": [
            {
                "kind": "t3",
                "data": {
                    "approved_at_utc": null,
                    "subreddit": "GunAccessoriesForSale",
                    "selftext": "Morning gents. I\u2019m looking to snag up your forgotten factory yellow spring for the 509T. I need to source one for a buddy who lost his and I cannot find any available anywhere! \n\nIf one of you have the yellow spring laying around, looking to pay $50 shipped\u2026 \n\nTo my 509t owners, it\u2019s the \u201clight\u201d spring that comes in a plastic bag in the carrying case. \n\nThanks in advance  ",
                    "author_fullname": "t2_2ezh71n6",
                    "saved": false,
                    "mod_reason_title": null,
                    "gilded": 0,
                    "clicked": false,
                    "title": "[WTB] 509T yellow spring",
                    "link_flair_richtext": [],
                    "subreddit_name_prefixed": "r/GunAccessoriesForSale",
                    [...]
                    "contest_mode": false,
                    "mod_reports": [],
                    "author_patreon_flair": false,
                    "author_flair_text_color": "dark",
                    "permalink": "/r/GunAccessoriesForSale/comments/1asadbj/wtb_509t_yellow_spring/",
                    "parent_whitelist_status": null,
                    "stickied": false,
                    "url": "https://www.reddit.com/r/GunAccessoriesForSale/comments/1asadbj/wtb_509t_yellow_spring/",
                    "subreddit_subscribers": 182613,
                    "created_utc": 1708094934.0,
                    "num_crossposts": 0,
                    "media": null,
                    "is_video": false
                    }
                },
            [...]
            ]
        }
    }

Nous avons réalisé un tutoriel dédié montrant comment surveiller Reddit avec un simple programme Go. Pour en savoir plus sur la façon de surveiller Reddit avec Go, cliquez ici.

Chaque plateforme de médias sociaux a ses propres subtilités que nous ne pouvons malheureusement pas couvrir dans cet article. Pour surveiller facilement les plateformes de médias sociaux (comme Reddit, Linkedin, X, Hacker News, et plus encore), vous pouvez vous abonner à une plateforme d'écoute sociale dédiée comme notre service KWatch.io. Essayez KWatch.io gratuitement ici.

Ajouter des mots-clés dans votre tableau de bord KWatch.io Ajouter des mots-clés dans votre tableau de bord KWatch.io

Parmi les principales difficultés rencontrées lors de l'écoute des médias sociaux, citons le volume important de données à traiter, le fait que vous pouvez être bloqué par la plateforme de médias sociaux si vous faites trop de demandes, et le fait que vous devez faire preuve d'intelligence dans la manière dont vous traitez les données.

Dans la section suivante, nous expliquerons comment intégrer les données collectées dans votre système.

Intégrer les données des médias sociaux dans votre système

Une fois que vous avez collecté les données des plateformes de médias sociaux, vous devez les stocker dans une base de données ou un entrepôt de données. Cela vous permettra d'analyser les données, d'effectuer une analyse des sentiments et de générer des informations.

Il existe plusieurs façons de stocker les données des médias sociaux (qui sont essentiellement des données textuelles), en fonction de vos besoins et du volume de données que vous traitez. Les options les plus courantes sont les suivantes

Si vous vous êtes abonné à une plateforme d'écoute sociale, vérifiez si elle propose un moyen de transférer les données dans votre système.

Les webhooks, souvent appelés "web callbacks" ou "HTTP push API", permettent aux applications de partager des données en temps réel avec d'autres applications. Pour ce faire, ils génèrent des requêtes HTTP POST lorsque des événements spécifiques se produisent, ce qui permet de fournir rapidement des informations à d'autres applications.

Par exemple, sur notre plateforme, KWatch.io, vous devez aller dans la section "notifications" et définir une URL webhook pointant vers votre système.

API Webhook sur KWatch.io API Webhook sur KWatch.io

Voici à quoi ressemble le webhook de KWatch.io (il s'agit d'une charge utile JSON) :

{
    "platform": "reddit",
    "query": "Keywords: vllm",
    "datetime": "19 Jan 24 05:52 UTC",
    "link": "https://www.reddit.com/r/LocalLLaMA/comments/19934kd/sglang_new/kijvtk5/",
    "content": "sglang runtime has a different architecture on the higher-level part with vllm.",
}

Si vous êtes novice en la matière, vous pouvez facilement recevoir ces webhooks en Python à l'aide de FastAPI.

Installer FastAPI avec le serveur Uvicorn :

pip install fastapi uvicorn

Créez maintenant un nouveau fichier Python et collez le code suivant (vous devrez peut-être adapter ce script) :

# Import necessary modules
from fastapi import FastAPI
from pydantic import BaseModel

# Initialize your FastAPI app
app = FastAPI()

# Update the Pydantic model to properly type-check and validate the incoming data
class WebhookData(BaseModel):
    platform: str
    query: str
    datetime: str
    link: str
    content: str

# Define an endpoint to receive webhook data
@app.post("/kwatch-webhooks")
async def receive_webhook(webhook_data: WebhookData):
    # Process the incoming data
    # For demonstration, we're just printing it
    print("Received webhook data:", webhook_data.dict())
    
    # Return a response
    return {"message": "Webhook data received successfully"}

if __name__ == "__main__":
    # Run the server with Uvicorn
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)

Enregistrez le fichier et exécutez le serveur à l'aide de la commande suivante :

uvicorn webhook_server:app — reload — host 0.0.0.0 — port 8000

Votre serveur est maintenant opérationnel et prêt à recevoir les webhooks de KWatch.io.

Effectuer une analyse de sentiment sur les données avec des modèles d'IA génératifs comme GPT-4 ou LLaMA 3

Une fois que vous avez collecté et stocké les données des médias sociaux, vous pouvez procéder à une analyse des sentiments.

Aujourd'hui, la manière la plus précise d'effectuer une analyse du sentiment sur un morceau de texte concernant un mot-clé spécifique est d'utiliser des modèles d'IA génératifs tels que GPT-4, LLaMA 3, ChatDolphin, etc. Ces LLM ne sont pas nécessairement rapides et peuvent être coûteux à grande échelle, mais ils garantissent des résultats de pointe. Si vous devez analyser de très gros volumes de mots-clés, vous pouvez réduire les coûts en utilisant des modèles plus petits ou en affinant votre propre modèle.

Vous pouvez déployer votre propre modèle d'IA ou vous connecter à une API d'IA comme OpenAI ou NLP Cloud. Dans cet article, nous nous connecterons à l'API d'IA de NLP Cloud.

Vous pouvez vous inscrire sur NLP Cloud et récupérer votre clé API ici.

Votre demande ne doit pas être trop complexe. Voici par exemple un commentaire sur Reddit, à propos d'OpenAI :

Un commentaire sur Reddit à propos de l'OpenAI Un commentaire sur Reddit à propos de l'OpenAI

Utilisons le modèle ChatDolphin sur NLP Cloud afin d'analyser le sentiment sur OpenAI dans ce commentaire Reddit. Tout d'abord, installez le client NLP Cloud Python :

pip install nlpcloud

Vous pouvez maintenant analyser le sentiment du commentaire Reddit à l'aide du code Python suivant :

import nlpcloud

brand = "OpenAI"
reddit_comment = "Wasn't it the same with all OpenAI products? Amazing and groundbreaking at first, soon ruined by excessive censorship and outpaced by the competitors"

client = nlpcloud.Client("chatdolphin", "your api token", gpu=True)
print(client.generation(f"What is the sentiment about {brand} in the following comment? Positive, negative, or neutral? Answer with 1 word only.\n\n{reddit_comment}"))

La réponse sera la suivante :

Negative

Nous allons maintenant terminer et écrire le code final qui écoute le webhook de l'API et effectue une analyse des sentiments sur les données :

from fastapi import FastAPI
from pydantic import BaseModel
import nlpcloud

client = nlpcloud.Client("dolphin", "your api token", gpu=True)

app = FastAPI()

class WebhookData(BaseModel):
    platform: str
    query: str
    datetime: str
    link: str
    content: str

@app.post("/kwatch-webhooks")
async def receive_webhook(webhook_data: WebhookData):
    brand = "OpenAI"
    print(client.generation(f"""What is the sentiment about {brand} in the following comment? Positive, negative, or neutral? Answer with 1 word only.\n\n
            {webhook_data.content}"""))
    
    return {"message": "Webhook data received successfully"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
    

Conclusion

Comme vous pouvez le constater, il est possible d'automatiser l'analyse des sentiments sur les données des médias sociaux à l'aide de modèles d'IA générative modernes et d'outils d'écoute sociale efficaces. Cette approche peut être appliquée dans divers scénarios de surveillance des médias sociaux. En voici quelques exemples :

La mise en place d'un tel programme peut toutefois s'avérer difficile. D'abord parce que les médias sociaux ne sont pas si faciles à surveiller, mais aussi parce que les modèles d'IA générative peuvent être coûteux à utiliser sur de grands volumes de données.

Si vous ne souhaitez pas construire et maintenir un tel système par vous-même, nous vous recommandons d'utiliser plutôt notre plateforme KWatch.io, car nous surveillons automatiquement les médias sociaux et effectuons une analyse du sentiment sur les messages et les commentaires détectés : s'inscrire sur KWatch.io ici.

Arthur
Directeur technique de KWatch.io