Automatisez les processus d’exploration de texte et d’analyse des sentiments, Excel VBA
L’automatisation des processus d’exploration de texte et d’analyse des sentiments dans Excel avec VBA peut être un défi intéressant, mais aussi très puissant pour les analyses de données textuelles. Pour accomplir cette tâche, nous devons diviser l’opération en plusieurs étapes :
1. Exploration de texte : C’est l’étape où nous préparons les données en nettoyant et en transformant le texte (par exemple, suppression des espaces, conversion en minuscules, suppression des stopwords, etc.).
2. Analyse des sentiments : Une fois que nous avons le texte nettoyé, nous devons analyser les sentiments, c’est-à-dire déterminer si le sentiment général est positif, négatif ou neutre. Pour cela, nous devons utiliser une bibliothèque d’analyse de sentiments.
Cependant, dans VBA, il n’y a pas de bibliothèque native d’analyse de sentiment, mais nous pouvons utiliser une API externe comme celle de TextBlob ou Azure Cognitive Services pour effectuer l’analyse des sentiments. Voici un exemple détaillé d’un processus d’exploration de texte et d’analyse des sentiments avec VBA, en utilisant l’API de Microsoft Azure pour l’analyse des sentiments.
Étapes à suivre :
1. Inscription sur Azure Cognitive Services :
- Vous devez d’abord vous inscrire pour accéder à l’API d’Azure pour l’analyse des sentiments (Cognitive Services Text Analytics).
- Une fois inscrit, vous obtiendrez une clé API et une URL de point de terminaison.
2. Préparation du fichier Excel :
- Créez un fichier Excel avec des données textuelles (par exemple, dans la colonne A).
- Dans la colonne B, nous afficherons le sentiment (positif, négatif ou neutre).
- Code VBA pour nettoyer le texte et appeler l’API d’Azure.
Code VBA détaillé :
Sub AnalyserSentiment() ' Variables Dim http As Object Dim url As String Dim apiKey As String Dim text As String Dim jsonRequest As String Dim jsonResponse As String Dim sentiment As String Dim i As Long ' Insérer ici votre clé API et l'URL du service apiKey = "VOTRE_CLÉ_API" url = "https://<votre_endpoint>.cognitiveservices.azure.com/text/analytics/v3.0/sentiment" ' Créer l'objet HTTP pour envoyer la requête Set http = CreateObject("MSXML2.XMLHTTP") ' Boucle sur chaque ligne pour analyser le sentiment For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row text = Cells(i, 1).Value ' Nettoyer le texte (retirer les espaces inutiles et mettre en minuscules) text = Trim(LCase(text)) ' Créer la requête JSON jsonRequest = "{""documents"":[{""id"":""1"",""text"":""" & text & """}]}" ' Envoyer la requête HTTP POST http.Open "POST", url, False http.setRequestHeader "Content-Type", "application/json" http.setRequestHeader "Ocp-Apim-Subscription-Key", apiKey http.Send jsonRequest ' Récupérer la réponse JSON jsonResponse = http.responseText ' Extraire le sentiment de la réponse JSON sentiment = GetSentimentFromResponse(jsonResponse) ' Placer le sentiment dans la colonne B Cells(i, 2).Value = sentiment Next i ' Libérer la mémoire Set http = Nothing End Sub ' Fonction pour extraire le sentiment de la réponse JSON Function GetSentimentFromResponse(response As String) As String Dim startPos As Long Dim endPos As Long Dim sentiment As String ' Rechercher la position du sentiment dans la réponse JSON startPos = InStr(response, """sentiment"":""") + Len("""sentiment"":""") endPos = InStr(startPos, response, """") ' Extraire le sentiment sentiment = Mid(response, startPos, endPos - startPos) ' Retourner le sentiment GetSentimentFromResponse = sentiment End Function
Explication détaillée du code :
1. Déclaration des variables :
- http : Objet pour envoyer des requêtes HTTP.
- url : URL de l’API d’analyse des sentiments de Microsoft Azure.
- apiKey : Clé d’API pour authentifier les requêtes.
- text : Le texte à analyser.
- jsonRequest : Structure JSON à envoyer dans la requête.
- jsonResponse : Réponse renvoyée par l’API après l’analyse du texte.
- sentiment : Le sentiment analysé (positif, négatif, ou neutre).
2. Envoi de la requête à l’API Azure :
- Le texte est d’abord nettoyé (mis en minuscules et supprimé des espaces inutiles).
- Une requête HTTP POST est envoyée à l’API avec le texte en JSON.
- L’API analyse le texte et renvoie un objet JSON contenant le résultat.
3. Extraction du sentiment de la réponse :
- La fonction GetSentimentFromResponse récupère la valeur du sentiment (positif, négatif ou neutre) à partir de la réponse JSON.
4. Placement du résultat dans la feuille Excel :
- Le sentiment est affiché dans la colonne B de chaque ligne correspondante.
Pré-requis :
1. Référence à la bibliothèque Microsoft XML :
- Ouvrez l’éditeur VBA (Alt + F11).
- Allez dans Outils > Références.
- Cochez la case Microsoft XML, v6.0 (ou une version similaire) pour pouvoir utiliser l’objet MSXML2.XMLHTTP.
2. Gestion des erreurs :
- Le code ne gère pas toutes les erreurs possibles. Il est conseillé de vérifier si l’API répond correctement et d’ajouter des mécanismes pour gérer les erreurs liées à l’API (par exemple, si la clé API est invalide ou si l’API est hors ligne).
Tester le code :
- Placez des données textuelles dans la colonne A (par exemple, des avis clients ou des commentaires).
- Exécutez la macro AnalyserSentiment pour voir les résultats dans la colonne B. La macro analysera chaque texte, effectuera l’analyse des sentiments et affichera le sentiment global dans la colonne B.
Limitations :
- Quota de l’API : Assurez-vous que vous respectez les limites de l’API de Microsoft Azure (exemple : nombre de requêtes par mois).
- Langue : Azure Cognitive Services prend en charge plusieurs langues. Assurez-vous que la langue du texte est compatible avec l’API.
Ce processus vous permet d’automatiser l’analyse des sentiments dans Excel à l’aide de VBA, tout en tirant parti des services puissants d’Azure pour l’analyse des sentiments.