Power BI : Power Query, Machine Learning… Et des Zombies
Bon, avec un titre comme ça, je suis certains de susciter l’intérêt de certains !
Dernièrement il y a eu de nombreuses nouveautés autour d’Azure et plus particulièrement sur le sujet du machine Learning et Azure Marketplace . Il est maintenant possible, depuis l’Azure Marketplace, de consommer des algorithmes de Machine Learning pour les intégrer dans des applications…. mais aussi dans Excel.
Pour illustrer ces nouvelles fonctionnalités, je me suis dit, on va analyser les sentiments qu’ont les êtres humains par rapport à leurs cousins Zombies. Et pour ce faire, je vais aller chercher les informations sur Facebook.
Récupérer les informations
Comme vous le savez sûrement déjà, Excel Power Query est capable de récupérer les informations depuis Facebook.
Dans Excel, Dans le ruban, cliquez sur “Power Query”. Ensuite cliquez sur “From Other Sources” puis sur “From Facebook”.
La fenêtre suivante apparaît. Pour mon exemple, je vais récupérer les informations de la page Facebook du site Zombie-Parade, site francophone sur la culture Zombie.
Cela me permettra aussi de voir comment se comporte l’algorithme de machine Learning avec des phrases en Français !
Power Query retourne donc les informations venant de Facebook. Je vais commencer par renommer ma requête. Dans le panneau de droite, dans “Properties”, Dans le champ “Name”, renommez votre requête. Dans cet exemple je vais la nommer “Zombies” (original !).
Via Power Query, je vais réaliser un ensemble de transformation pour ne conserver que les titres des articles, les commentaires des internautes et 2 ou 3 autres informations je j’estime utiles. Comme il y’a déjà eu de nombreux articles sur l’utilisation de Power Query, je passe directement au résultat final.
Après nettoyage des données, voici ce que j’obtiens :
Intégration d’un algorithme de machine Learning
Souscription au service via Azure Marketplace
Maintenant que nous avons notre jeu de données, nous allons tenter une analyse des sentiments via les phrases contenues dans le titre du post et celles venant des commentaires des internautes.
Avant de commencer, il est nécessaire de souscrire au service que l’on souhaite consommer depuis l’Azure Marketplace. Via le lien suivant, vous pourrez récupérer les différents algorithmes qui sont déjà disponibles :
https://datamarket.azure.com/browse?query=machine+Learning
Pour souscrire à un des algorithmes, cliquez sur celui qui vous intéresse. Une fois dans la description détaillée, cliquez sur “Sign Up”.
Dans la fenêtre qui apparaît, cochez la case d’acceptation des conditions puis cliquez sur le bouton “Sign Up”.
Au bout de quelques secondes, le service est disponible.
,
Il ne reste plus qu’à le récupérer avec Power Query.
Intégration des algorithmes avec Power Query
Depuis Excel, dans le ruban cliquez sur “Power Query”, puis sur “From Other Sources” puis cliquez sur “From Microsoft Azure Marketplace”.
Si vous vous connectez pour la première fois au service vous aurez la fenêtre suivante. Cliquez sur “Sign in”.
Connectez-vous au site Azure Marketplace.
Permettez l’accès depuis Power Query en cliquant sur “Allow Access”.
Une fois de retour dans Excel, cliquez sur le bouton “Save”.
Et hop ! Nous avons accès aux services auxquels nous avons souscrit via l’Azure MarketPlace.
Bien qu’il soit possible d’utiliser les algorithmes directement depuis le panneau “Navigator”, nous allons plutôt essayer de les intégrer dans notre Power Query de départ. Celui qui va récupérer les données de Facebook. Bien que cela a déjà été détaillé sur quelques blogs dont celui de Chris Webb, voici quand même le détail de l’intégration.
Dans un premier temps, dans le panneau “Navigator”, nous allons sélectionner l’algorithme que nous souhaitons utiliser. Ici je vais utiliser “Lexicon Based Sentiment Analysis API built with Azure Machine Learning”.
Double-cliquez sur “Fx Score". La fenêtre “Enter Parameter” apparaît. Entrez une phrase dans le champ “Text” puis cliquez sur “Ok”.
Power Query nous retourne un résultat compris entre –1 pour “très négatif” et +1 pour “très positif”. Dans notre cas, l’algorithme se doute que les Zombies ne sont pas si sympathiques que ça, vu que le résultat qu’il nous retourne est 0 .
Pour tester, j’ai essayé en anglais, et le résultat retourné est 1. Ça passe mieux en anglais (comme pour les chansons Disco ).
Ce qui nous intéresse ici c’est le code M généré par Power Query. Cliquez sur l’onglet “View” puis sur le bouton “Advanced Editor”.
Le code généré est celui-ci :
let
Source = Marketplace.Subscriptions(),
#"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/" = Source{[ServiceUrl="https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"]}[Feeds],
Score1 = #"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"{[Name="Score"]}[Data],
#"Invoked FunctionScore1" = Score1("Les Zombies sont nos amis")
in
#"Invoked FunctionScore1"
Nous allons le transformer de la manière suivante :
let
Source = Marketplace.Subscriptions(),
#"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/" = Source{[ServiceUrl="https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"]}[Feeds],
SentimentZ = #"https://api.datamarket.azure.com/data.ashx/aml_labs/lexicon_based_sentiment_analysis/v1/"{[Name="Score"]}[Data]
in
SentimentZ
J’ai retiré la ligne : #"Invoked FunctionScore1" = Score1("Les Zombies sont nos amis"). Cliquez sur le bouton “Done”
Avant de fermer la fenêtre Power Query, nous allons renommer notre requête “SentimentZ”. Ce qui nous permettra de l’invoquer par la suite. Puis cliquez sur le bouton “Close & Load”.
Vous devez donc revenir dans une feuille Excel et vous devez avoir deux requêtes Power Query dans le panneau de droite “Workbook Queries”.
Ajout d’une colonne sentiment
Faîtes un clic droit sur la requête Facebook (“Zombies” dans mon cas), puis cliquez sur “Edit”.
La fenêtre Power Query s’ouvre. Dans le volet de droite, dans la partie “Applied Steps”, assurez-vous que le curseur soit bien sur la dernière étape de la transformation de données.
Dans le ruban, cliquez sur “Add Column” puis sur le bouton “Add Custom Column”.
Dans la fenêtre “Add Custom Column”, entrez la commande suivante “SentimentZ([Nom du post])”. Puis cliquez sur “Ok”.
Si tout va bien vous devez recevoir le message suivant : “Information is required about data privacy”. Cliquez sur le bouton “Continue”.
La fenêtre suivante apparaît. Cliquez sur “Select” pour définir le niveau de confidentialité de cette source de données.
Une nouvelle colonne est ajoutée ayant la valeur “record” pour chacune des cellules. A droite du titre de la nouvelle colonne, cliquez sur le bouton représentant 2 flèches. Une liste déroulante apparaît. Cliquez sur “Ok”.
Le résultat apparaît alors dans la colonne.
Je vais répéter cette opération pour rajouter un calcul de sentiment basé sur les commentaires des internautes :
Dans le ruban, cliquez sur “Home” puis sur “Close & Load” pour injecter les données dans une feuille Excel. Il est, bien entendu, possible de l’envoyer dans un modèle Power Pivot pour réaliser d’autres transformations ou rajouter des champs calculés.
Exploitation des données
Une fois les données chargées dans Excel, dans le ruban, cliquez sur “Insert” puis sur “Pivot Table”.
La fenêtre “Create PivotTable” apparaît. Théoriquement, il n’y a rien à modifier dans cette fenêtre. Cliquez sur le bouton “Ok”.
L’éditeur de tableau croisé dynamique apparaît :
Il ne vous reste plus qu’à faire un beau tableau .
Ci-dessous une copie d’écran d’un tableau croisé dynamique terminé. Dans ce tableau j’ai rajouté un formatage conditionnel. Et pour réaliser le slicer avec les smiley, je suis passé par Power Pivot, et j’ai fait une colonne calculée avec les règles suivantes :
- Si la valeur du sentiment est inférieure à 0 alors on inscrit la lettre “L”
- Si la valeur du sentiment est supérieure à 0 alors on inscrit la lettre “J”
- Si la valeur du sentiment est égale à 0 alors on inscrit la lettre “K”
Ensuite, j’ai créé un slicer sur ce champ et j’ai modifié le slicer pour utiliser la police “Wingdings”.
On peut constater que l’analyse de sentiment fonctionne plutôt pas trop mal sur du texte en Français. Même si ça reste encore perfectible comme nous montre l’exemple ci-dessous. Mais la machine va continuer à apprendre !!!
Et pour le fun un petit Power View pour suivre l’évolution des sentiments des commentaires dans le temps !
Donc bilan de l’opération, les Zombies ont bien la cote en ce moment, mais on avait pas besoin de Machine Learning pour le savoir .
Au-delà de la petite plaisanterie, l’algorithme de sentiment fonctionne plutôt bien, même si les phrases Françaises ne sont pas toutes bien traitées pour le moment. Mais surtout, c’est l’intégration avec Excel et la simplicité d’utilisation des algorithmes qu’il faut retenir.
Sessions de formation gratuites :
-
- Microsoft Virtual Academy : https://www.microsoftvirtualacademy.com/
Pour tester Windows Server 2012, Windows 8, SQL Server 2012 et SQL Server 2014 CTP2, vous pouvez télécharger gratuitement la version d’évaluation disponible sous la forme :
Windows Server 2012 :
-
- d'une image ISO : https://aka.ms/jeveuxwindows2012
- d'un fichier VHD avec un système préinstallé : https://aka.ms/jeveuxwindows2012
SQL Server 2012 :
Evaluation SQL Server 2014 CTP2 :
Evaluation Power BI :
Testez Azure gratuitement pendant un mois :
Comments
- Anonymous
November 14, 2014
Avec Pascal Saulière , Architecte Infrastructure, nous avons enregistré un podcast sur les nouveautés