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 Sourire !

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”.

image 

 

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 !

image

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 !).

image

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 :

image 

 

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

image

 

Pour souscrire à un des algorithmes, cliquez sur celui qui vous intéresse. Une fois dans la description détaillée, cliquez sur “Sign Up”.

 

 image

Dans la fenêtre qui apparaît, cochez la case d’acceptation des conditions puis cliquez sur le bouton “Sign Up”.

image

Au bout de quelques secondes, le service est disponible.

image

,

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”.

 

image

 

Si vous vous connectez pour la première fois au service vous aurez la fenêtre suivante. Cliquez sur “Sign in”.

image

 

Connectez-vous au site Azure Marketplace.

image

 

Permettez l’accès depuis Power Query en cliquant sur “Allow Access”.

image

 

Une fois de retour dans Excel, cliquez sur le bouton “Save”.

image

Et hop !  Nous avons accès aux services auxquels nous avons souscrit via l’Azure MarketPlace.

image 

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”.

image

Double-cliquez sur “Fx Score". La fenêtre “Enter Parameter” apparaît. Entrez une phrase dans le champ “Text” puis cliquez sur “Ok”.

image

 

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 Sourire.

image

Pour tester, j’ai essayé en anglais, et le résultat retourné est 1. Ça passe mieux en anglais (comme pour les chansons Disco Sourire).

image

 

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”.

image

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”.

 

image

 

Vous devez donc revenir dans une feuille Excel et vous devez avoir deux requêtes Power Query dans le panneau de droite “Workbook Queries”.

image

 

Ajout d’une colonne sentiment

Faîtes un clic droit sur la requête Facebook (“Zombies” dans mon cas), puis cliquez sur “Edit”.

image

 

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.

 

image

 

Dans le ruban, cliquez sur “Add Column” puis sur le bouton “Add Custom Column”.

image

 

Dans la fenêtre “Add Custom Column”, entrez la commande suivante “SentimentZ([Nom du post])”. Puis cliquez sur “Ok”. image

 

Si tout va bien vous devez recevoir le message suivant : “Information is required about data privacy”. Cliquez sur le bouton “Continue”.

image

 

La fenêtre suivante apparaît. Cliquez sur “Select” pour définir le niveau de confidentialité de cette source de données.

image

 

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”.

image

 

Le résultat apparaît alors dans la colonne.

image

Je vais répéter cette opération pour rajouter un calcul de sentiment basé sur les commentaires des internautes :

image

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.

image

 

Exploitation des données

Une fois les données chargées dans Excel, dans le ruban, cliquez sur “Insert” puis sur “Pivot Table”.

image

 

La fenêtre “Create PivotTable” apparaît. Théoriquement, il n’y a rien à modifier dans cette fenêtre. Cliquez sur le bouton “Ok”.

image

 

L’éditeur de tableau croisé dynamique apparaît :

image

Il ne vous reste plus qu’à faire un beau tableau Sourire.

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”.

image

 

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 Sourire !!!

image

Et pour le fun un petit Power View pour suivre l’évolution des sentiments des commentaires dans le temps !

image

 

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 Sourire.

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.

Franck Mercier

Sessions de formation gratuites :

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 :

SQL Server 2012 :

Evaluation SQL Server 2014 CTP2 :

Evaluation Power BI :

Testez Azure gratuitement pendant un mois :