Analyse de Sentiment sur X
Comprendre ce que votre audience pense vraiment
L’analyse de sentiment transforme des milliers de posts en une lecture claire de la perception de votre marque, de vos concurrents ou de votre secteur. Avec X Search et les capacités de raisonnement de Grok, vous pouvez dépasser la simple classification positif/négatif pour comprendre les nuances émotionnelles, les frustrations latentes et les signaux d’alerte.
Les dimensions du sentiment en marketing
L’analyse de sentiment marketing va au-delà du binaire positif/négatif. Voici les dimensions pertinentes :
Échelle de sentiment à 5 niveaux
- Très positif : enthousiasme, recommandation active, amour de marque
- Positif : satisfaction, approbation, intérêt
- Neutre : mention factuelle, partage d’information
- Négatif : déception, critique, frustration
- Très négatif : colère, appel au boycott, crise
Dimensions complémentaires
- Intention d’achat : le post indique-t-il une intention d’achat ou de désabonnement ?
- Influence : le post vient-il d’un compte influent ou d’un consommateur lambda ?
- Viralité : le post a-t-il un potentiel de propagation ?
- Urgence : le signal nécessite-t-il une réaction rapide ?
Analyser le sentiment avec X Search et Grok
Analyse de sentiment sur votre marque
def analyser_sentiment_marque(marque, periode_jours=7):
from datetime import datetime, timedelta
today = datetime.now().strftime("%Y-%m-%d")
start = (datetime.now() - timedelta(days=periode_jours)).strftime("%Y-%m-%d")
response = client.responses.create(
model="grok-4.20-reasoning",
input=f"""Analyse le sentiment des conversations sur X
à propos de {marque} entre le {start} et le {today}.
Pour chaque thème de conversation identifié, fournis :
1. Le thème (ex: "service client", "qualité produit")
2. Le sentiment dominant (échelle 1-5)
3. Le volume estimé de la conversation
4. Les verbatims les plus représentatifs
5. Les comptes les plus influents dans la discussion
6. L'évolution du sentiment sur la période
Synthèse finale :
- Score de sentiment global (1-5)
- Top 3 des points positifs
- Top 3 des points négatifs
- Alertes éventuelles""",
tools=[{
"type": "x_search",
"from_date": start,
"to_date": today
}]
)
return response.output_text
Analyse comparative du sentiment
Comparez la perception de votre marque avec celle de vos concurrents :
def sentiment_comparatif(marques, periode_jours=30):
from datetime import datetime, timedelta
today = datetime.now().strftime("%Y-%m-%d")
start = (datetime.now() - timedelta(days=periode_jours)).strftime("%Y-%m-%d")
response = client.responses.create(
model="grok-4.20-reasoning",
input=f"""Compare le sentiment sur X pour ces marques :
{', '.join(marques)}
Période : {start} à {today}
Pour chaque marque, évalue :
- Score de sentiment global (1-5, avec décimale)
- Thèmes positifs dominants
- Thèmes négatifs dominants
- Forces perçues par le public
- Faiblesses perçues par le public
Tableau comparatif final avec classement par sentiment.
Identifie les opportunités de positionnement pour la
première marque de la liste.""",
tools=[{"type": "x_search", "from_date": start, "to_date": today}]
)
return response.output_text
Obtenir des résultats structurés en JSON
Pour intégrer l’analyse de sentiment dans un pipeline de données, demandez une sortie JSON :
def sentiment_structure(marque, periode_jours=7):
from datetime import datetime, timedelta
today = datetime.now().strftime("%Y-%m-%d")
start = (datetime.now() - timedelta(days=periode_jours)).strftime("%Y-%m-%d")
response = client.responses.create(
model="grok-4.20-reasoning",
input=f"""Analyse le sentiment sur X à propos de {marque}.
Période : {start} à {today}.
Réponds UNIQUEMENT en JSON valide avec cette structure :
{{
"marque": "{marque}",
"periode": "{start} - {today}",
"score_global": 3.7,
"distribution": {{
"tres_positif": 15,
"positif": 35,
"neutre": 30,
"negatif": 15,
"tres_negatif": 5
}},
"themes": [
{{
"nom": "service client",
"score": 2.1,
"volume": "élevé",
"tendance": "stable"
}}
],
"alertes": ["description alerte si applicable"],
"recommandations": ["action recommandée"]
}}""",
tools=[{"type": "x_search", "from_date": start, "to_date": today}]
)
return response.output_text
Suivi de l’évolution du sentiment dans le temps
L’analyse ponctuelle est utile, mais c’est le suivi dans le temps qui révèle les tendances. Comparez les résultats semaine après semaine :
def evolution_sentiment(marque, nb_semaines=4):
from datetime import datetime, timedelta
import json
historique = []
for i in range(nb_semaines, 0, -1):
end = (datetime.now() - timedelta(weeks=i-1)).strftime("%Y-%m-%d")
start = (datetime.now() - timedelta(weeks=i)).strftime("%Y-%m-%d")
response = client.responses.create(
model="grok-4.20-reasoning",
input=f"""Score de sentiment sur X pour {marque}
du {start} au {end}.
Réponds avec un JSON : {{"semaine": "{start}",
"score": X.X, "volume": N, "theme_dominant": "..."}}""",
tools=[{
"type": "x_search",
"from_date": start,
"to_date": end
}]
)
historique.append(response.output_text)
return historique
Détecter les crises de réputation
L’analyse de sentiment est votre premier système d’alerte en cas de crise :
def detecter_crise(marque, seuil_negatif=40):
resultat = sentiment_structure(marque, periode_jours=1)
# Parser le JSON
import json
data = json.loads(resultat)
pct_negatif = (data["distribution"]["negatif"] +
data["distribution"]["tres_negatif"])
if pct_negatif > seuil_negatif:
return {
"alerte": True,
"niveau": "CRITIQUE" if pct_negatif > 60 else "IMPORTANT",
"score": data["score_global"],
"themes_negatifs": [t for t in data["themes"] if t["score"] < 2.5],
"recommandation": "Réunion de crise recommandée"
}
return {"alerte": False, "score": data["score_global"]}
Points clés à retenir
- L’analyse de sentiment dépasse le positif/négatif : évaluez l’intention, l’influence et l’urgence
- Utilisez une échelle à 5 niveaux pour capturer les nuances
- Demandez des sorties JSON structurées pour alimenter vos dashboards
- Suivez l’évolution du sentiment dans le temps, pas seulement les snapshots ponctuels
- Comparez systématiquement votre sentiment avec celui de vos concurrents
- Configurez des seuils d’alerte pour détecter les crises de réputation dès leur émergence