MVP Challenge Azure Data & AI – Vidéo

Le MVP Challenge Azure Data & AI est maintenant derrière moi, avec plusieurs apprentissages, une certification et quelques articles sur le sujet. Voici donc un vidéo du Bracket Show dans lequel nous avons survolé quelques-unes des fonctionnalités que j’ai eu la chance d’apprendre pendant ce mois.

Continuer la lecture de « MVP Challenge Azure Data & AI – Vidéo »

MVP Challenge Azure Data & AI – Partie 5

Dernière semaine du MVP Challenge Data & AI. Pour finir le tout en beauté, j’ai eu la chance de revenir sur les API d’analyse de texte, j’ai découvert la solution de recherche cognitive d’Azure, j’ai construit des bots et finalement j’ai fait un survol de plusieurs aspects entourant l’accessibilité. Voici mes découvertes, bonne lecture!

La première partie est disponible ici: Partie 1
La deuxième partie est disponible ici: Partie 2
La troisième partie est disponible ici: Partie 3
La quatrième partie est disponible ici: Partie 4

Reconnaissance d’entités

La reconnaissance d’entités, qui fait parti de l’API Text Analytics, nous permet d’extraire une liste d’entités ou d’items que le service reconnait, pouvant même nous retourner des liens sur ces entités si possible (par exemple un lien vers la page de Wikipedia). Comme cet API est déjà en place, tout ce qu’on a à faire une fois qu’on a notre ressource Azure pour les services cognitifs, c’est de l’appeler. Si on utilise le SDK déjà disponible pour C#, un appel à ce service sera aussi simple que ces quelques lignes (avec quelques instructions en amont pour initialiser le client):

L’API est fait pour recevoir du JSON en paramètre, chose que le SDK s’occupe de faire pour nous à l’utilisation. Dans l’exemple ci-haut, le résultat nous donnerait une liste contenant entre autre « Microsoft » et « Bill Gates ».

Dans le même genre, il existe aussi des APIs et SDK qui nous permettent d’extraire les phrases clé d’un texte ou encore de détecter la langue à partir du texte reçu. Pour ce qui est de la détection de langue, on peut très bien imaginer l’utilisation avec un bot qui doit savoir dans quelle langue une personne s’y adresse pour être en mesure de lui répondre la bonne chose, dans la bonne langue.

Azure Cognitive Search

La recherche cognitive est un outil qui nous permet de se construire une solution d’indexage et de requête à partir de plusieurs sources de données pour avoir une solution de recherche à grande échelle. En d’autres mots, on peut prendre plusieurs sources de données, en extraire ce dont on a besoin pour de la recherche et le préserver dans un index qui sera représenté sous forme de documents JSON et donc très facile à rechercher.

Contrairement à une recherche « classique », cette recherche permet d’utiliser les services cognitifs pour nous retourner des résultats en fonction de la pertinence de ceux-ci et non uniquement sur le fait que la valeur recherchée est retrouvée dans un champ. On peut même y ajouter un suggester, qui va permettre les suggestions pendant qu’on écrit et l’auto-complétion.

Pour configurer un service de recherche, on peut passer par l’interface web d’Azure ou même y aller directement via le code. Personnellement, j’ai trouvé que l’interface web était plus simple pour apprendre sur le sujet, qui peut être relativement imposant lorsqu’on ne sait pas tout ce que cela permet.

Les bots

Alors que j’avais vu brièvement comment créer un bot, cette fois c’est dans la construction que j’ai eu la chance d’apprendre. J’ai tout d’abord exploré le Bot Framework SDK, qui permet de créer un bot via un projet en C#. Essentiellement, il faut faire un override des méthodes qu’on veut redéfinir le comportement. Par exemple, cette méthode qui permet de répondre quelle heure il est lorsque une question avec le mot time est inscrite:

L’autre manière de créer un bot est avec l’aide du Bot Framework Composer. Cet outil, qu’on doit installer localement sur notre ordinateur, nous permet de composer les différents dialogues grâce à une interface où on ajoute différentes actions, questions ou réactions à prendre selon ce qui a été entré par l’utilisateur. Pour donner un léger aperçu, voici une partie d’un bot que j’ai créé avec le menu pour ajouter une question:

Accessibilité

L’accessibilité est au coeur de beaucoup des services d’intelligence artificielle. Une phrase qui m’a beaucoup raisonné en tête en faisant les apprentissages disait que lorsqu’on ne considère pas l’accessibilité, nous avons le pouvoir d’exclure des gens. Ceci devrait donc être au coeur de nos préoccupations en tant que développeur, de manière hâtive dans nos projets plutôt qu’à la fin, souvent fait à moitié.

Dans ces quelques modules, j’ai entre autre appris l’existance du Accessibility Insights, qui permet de détecter les problèmes d’accessibilité sur nos applications, autant mobile, web et de bureau. Du côté de la suite Office, une chose que je ne connaissais pas est au niveau de PowerPoint, où on peut utiliser un Presenter Coach qui est un service utilisant l’AI pour nous donner du feedback sur notre présentation et nous offrir des recommandations. On retrouve aussi dans la majorité des produits des outils qui peuvent nous aider à identifier et corriger les problèmes d’accessibilité, comme par exemple un texte alternatif manquant sur une image d’un courriel.

Conclusion

Le mois de mai fût pour moi extrèmement chargé en apprentissages, avec un examen pour une certification et un autre (Azure AI-102) que je vais continuer de me préparer dans les prochaines semaines, car il est à mon avis un peu plus difficile que le AI-900. Je vous remets les liens vers mes collections de module d’apprentissages, qui ont été bonifiées avec certains modules de ma dernière semaine. Je suis aussi en préparation d’un épisode du Bracket Show pour une démonstration de certaines des choses que j’ai vu pendant le mois.

Si vous avez des commentaires ou des questions sur tous ces apprentissages, ou sur les certifications s’y rattachant, n’hésitez surtout pas à me laisser savoir dans les commentaires.

Collection sur le Data & AI: Voir la collection
Collection sur le Machine Learning: Voir la collection
Collection sur l’analyse d’images: Voir la collection
Collection sur l’analyse de mots: Voir la collection

Bruno

MVP Challenge

La première partie est disponible ici: Partie 1
La deuxième partie est disponible ici: Partie 2
La troisième partie est disponible ici: Partie 3
La quatrième partie est disponible ici: Partie 4

MVP Challenge Azure Data & AI – Partie 4

Cette semaine, après avoir vu les bases de l’intelligence artificielle, le MVP Challenge m’a amené sur un terrain un peu plus avancé du Data & AI par rapport à différents services cognitifs qu’on peut utiliser via Azure. Voici un résumé de ce que j’ai appris!

La première partie est disponible ici: Partie 1
La deuxième partie est disponible ici: Partie 2
La troisième partie est disponible ici: Partie 3
La quatrième partie: vous êtes ici
La cinquième partie est disponible ici: Partie 5

Azure Content Moderator

Le tout a commencé par un service que je n’avais pas encore vu, qui permet la modération d’images, de textes et de vidéos, assisté par l’AI évidemment. Ce service permet de détecter des items profanes ou explicites par exemple et peut même nous retourner une classification sur les éléments explicites, nous indiquant si on devrait faire une revue du contenu. Dans un monde où la main-d’oeuvre est souvent débordée, ce genre de service peut venir alléger la tâche des gens pour uniquement faire de la modération sur ce qui est jugé offensant. Comme tout est utilisable via un API, c’est plutôt simple à mettre en place, un exemple très complet pour l’essayer est d’ailleurs disponible ici.

Analyse de sentiments

Une autre belle découverte, l’analyse de sentiments grâce à l’API Text Analytics. J’avais vu brièvement dans une leçon précédante le fonctionnement de ceci, mais cette fois-ci je l’ai vu dans un exemple beaucoup plus concrèt. J’ai vu comment mettre un système de queues en places avec le Azure Queue Storage et avec une Azure Function pour recevoir des messages, déterminer s’ils sont positifs, négatifs ou neutres, puis transférer selon le résultat dans la bonne file du Queue Storage.

Speech Service

Encore une fois quelque chose que j’avais vu plus tôt dans le mois, mais plus concrètement en utilisant différents APIs pour consommer les services. Dans la conversion de l’audio à du texte, comme dans la traduction, l’utilisation de l’API est sensiblement la même. On construit l’objet qu’on a besoin (un SpeechRecognizer pour faire du speech-to-text par exemple) à partir d’un SpeechConfig pour se connecter au service sur Azure, d’un AudioConfig pour choisir un fichier audio au lieu du micro par exemple, puis il ne reste qu’à consommer le résultat de la méthode utilisée, qui s’occupe d’appeler le service cognitif qui fait le travail.

Analyse d’images et vidéos

Je suis aussi retourné dans l’analyse d’images sur différents aspects, entre autre avec le Face API. De voir que l’utilisation peut se faire grâce à des SDK rend l’utilisation beaucoup plus facilement approchable. Par exemple, ces quelques lignes de code permettent de détecter les émotions, les lunettes, les sourires ainsi que les différents points d’identifications (landmarks) sur une image:

L’analyse de vidéo est quelque chose que je n’avais pas encore vu et qui regroupe beaucoup des concepts des services cognitifs. En résumé, le service Azure Video Indexer permet de prendre des vidéos et d’en extraire des scènes, des identifications de visages, de la reconnaissance de texte, et même de la transcription et de l’analyse d’émotions dans l’audio. Au final, on se retrouve avec une tonne d’information qui nous permettrait par exemple de faire de la recherche sur des vidéos selon le contenu de ceux-ci.

Language Understanding

De ce côté, j’ai eu la chance de voir quelques concepts de plus que ce que j’avais écrit la semaine dernière. Par exemple, il existe des domaines pré-construits qu’on peut ajouter à nos projets LUIS avec quelques cliques, qui vont s’occuper d’ajouter uen grande sélection d’intentions et d’entités à notre modèle sans que nous ayons à le faire nous-même.

J’ai aussi vu qu’il était facile d’exporter une application LUIS vers un docker, avec une option disponible directement dans le menu d’export. Une chose importante à savoir avec ceci par contre est qu’il y a certaines limitations à déployer une application LUIS dans un conteneur, qui sont toutes répertoriées dans la documentation.

Conclusion

Cette semaine fût beaucoup plus chargée en terme d’utilisation des différents APIs, mais extrêmement intéressante parce qu’au-delà de comprendre les concepts vus dans les dernières semaines, j’ai pu voir la simplicité d’utilisation avec les différents SDK disponibles. Je n’ai pas de nouvelle collection d’apprentissage cette semaine, j’ai plutôt mis à jour ceux que j’avais déjà, donc le mieux pour voir les éléments ajoutés serait de les consulter:

Collection sur le Data & AI: Voir la collection
Collection sur le Machine Learning: Voir la collection
Collection sur l’analyse d’images: Voir la collection
Collection sur l’analyse de mots: Voir la collection

Bruno

MVP CHALLENGE

La première partie est disponible ici: Partie 1
La deuxième partie est disponible ici: Partie 2
La troisième partie est disponible ici: Partie 3
La quatrième partie: vous êtes ici
La cinquième partie est disponible ici: Partie 5

MVP Challenge Azure Data & AI – Partie 3

Cela fait maintenant deux semaines que j’ai débuté le MVP Challenge Azure Data & AI. Après avoir exploré le machine learning et l’analyse d’images, la dernière semaine était plutôt en lien avec l’analyse de textes, de la parole, de compréhension de langage naturel et de construction de bot pour de l’aide en ligne. Encore une fois, voici un résumé de ce que j’ai appris au cours de la dernière semaine.

La première partie est disponible ici: Partie 1
La deuxième partie est disponible ici: Partie 2
La troisième partie: vous êtes ici
La quatrième partie est disponible ici: Partie 4
La cinquième partie est disponible ici: Partie 5

Analyse de texte

Tout d’abord, ce qu’est l’analyse de texte. C’est un processus qui fait qu’un algorithme d’intelligence artificielle évalue les attributs d’un texte pour en ressortir certaines informations. Comme les analyses de textes sont rendus très évolués, c’est-à-dire qu’ils sont capables de comprendre selon la sémantique des mots, et non juste une traduction mot à mot, il est généralement mieux d’utiliser des services comme le Text Analytics sur Azure plutôt que de le programmer nous-même, surtout considérant qu’il s’agit uniquement de créer la ressource sur Azure puis de se servir du endpoint exposé.

Grâce à ce genre d’analyse, on peut déterminer la langue d’un texte, mais aussi des choses plus évoluées comme la détection de sentiment dans un texte. Ce genre d’analyse pourrait par exemple permettre de déterminer si une critique est positive ou négative sur un site transactionnel et même nous permettre de réagir plus promptement. On serait aussi en mesure d’extraire les points d’intérêts d’un document.

Reconnaissance et synthétisation de la parole

Que ce soit avec nos haut-parleurs intelligents ou notre mobile, nous utilisons cette fonctionnalité à tous les jours. C’est le processus qui permet d’interpréter de l’audio (notre voix par exemple) et ensuite de convertir le tout en texte qui peut être interprété. La synthétisation est plutôt l’inverse de ce processus, c’est-à-dire que cela va prendre du texte pour le convertir en audio, avec comme entrants le texte à dire et le choix de voix à utiliser.

Comme tout ce que j’explore présentement sur le AI avec Azure, tout est en place de ce côté pour nous offrir un service qui est déjà entraîné pour ceci. Avec la ressource Speech (ou encore le Cognitive Services si on utilise plusieurs fonctionnalités), on peut accéder aux APIs Speech-to-Text ou encore Text-to-Speech pour faire le travail via un endpoint.

Traduction de texte ou parole

Encore une fois quelque chose qu’on utilise fréquemment dans notre quotidien est la traduction. Nous sommes loin de ce que c’était maintenant que la sémantique est considérée pour les traductions. Une chose que j’ai apprise sur le service Translator Text d’Azure, mais qui ne me surprend pas, est qu’il y a plus de 60 langues supportées pour faire du text-to-text. On peut aussi y ajouter des filtres pour éviter des paroles vulgaires ou encore ajouter des tags sur du contenu qu’on ne voudrait pas traduire, comme le nom d’une entreprise.

Compréhension de langage naturel

Le Language Understanding, c’est l’art de prendre ce qu’un utilisateur dit ou écrit dans son langage naturel et de le transformer en action. Trois choses sont essentielles dans ce concept. La première est ce qu’on appelle les énoncés (utterance), c’est à dire la phrase à interpréter. Par exemple la phrase « allume la lumière ». Ensuite nous avons les intentions (intent), qui représentent ce qu’on veut faire à l’intérieur de l’énoncé. Dans cet exemple, nous aurions une intention « Allume » qui ferait la tâche d’allumer quelque chose. Finalement, nous avons les entités (entities), qui sont les items auxquels on fait référence dans les énoncés. Toujours dans le même exemple, ce serait « lumière ».

Une fois qu’on a ces concepts, mettre le tout en place est plutôt simple en utilisant LUIS (Language Understanding Intelligent Service). On y définit une liste d’énoncés, d’intentions et d’entités, chose qui peut aussi être faite à partir d’une liste prédéfinie pour certains domaines. On appelle ceci le authoring model. Une fois qu’il est entraîné (un simple clique de bouton), on peut le publier et l’utiliser de manière prédictive dans nos applications.

Construction d’un bot

Le service cognitif QnA Maker sur Azure est la base de ce qui nous permet de construire un bot qui sera capable de répondre de manière automatisée à des questions sur un service automatisé de support par exemple. On y construit une banque de questions-réponses à partir de laquelle on entraîne la base de connaissances. Ce que ceci permet est d’appliquer un traitement de language naturel sur les questions et réponses, pour faire en sorte que le système sera capable de répondre même si ce n’est pas phrasé exactement comme ce qu’on a inscrit.

Une fois qu’on a ceci, il ne reste qu’à construire un bot pour qu’il utilise cette base de connaissances. C’est possible d’utiliser un SDK et de se lancer dans du code pour le faire, mais je dois avouer que j’ai adoré simplement peser sur un bouton dans ma base QnA Maker qui m’a automatiquement créé un bot. Tout ce qu’il restait à faire ensuite était de l’utiliser dans mon application.

Certification Microsoft Azure AI-900

Une fois toutes ces leçons terminées, j’ai constaté que j’avais fait toutes les leçons permettant de se préparer à l’examen pour la certification Azure AI Fundamentals. Je n’ai donc pas attendu, ayant passé les deux dernières semaines à apprendre tout ceci, et j’ai cédulé mon examen et obtenu ma certification. Si vous suivez ces leçons de manière continue, je suis convaincu que vous aurez aussi la chance de passer l’examen et obtenir votre certification, les leçons nous préparent vraiment bien.

Conclusion

J’ai ajouté quelques leçons à ma collection de leçons générale ainsi qu’à une nouvelle collection pour tout ce qui concerne l’analyse de mots qui a été principalement ma dernière semaine. N’hésitez pas à me laisser savoir dans les commentaires si vous cheminez vers la certification ou encore si vous avez des questions!

Collection sur le Data & AI: Voir la collection
Collection sur le Machine Learning: Voir la collection
Collection sur l’analyse d’images: Voir la collection
Collection sur l’analyse de mots: Voir la collection

Bruno

mVP Challenge

La première partie est disponible ici: Partie 1
La deuxième partie est disponible ici: Partie 2
La troisième partie: vous êtes ici
La quatrième partie est disponible ici: Partie 4
La cinquième partie est disponible ici: Partie 5

MVP Challenge Azure Data & AI – Partie 2

La semaine dernière, je débutais le MVP Challenge Azure Data & AI. Me voici donc une semaine plus tard alors que j’ai exploré plusieurs aspects du Machine Learning et de tout ce qui concerne l’analyse d’images. Voici donc un résumé de mes découvertes.

La première partie est disponible ici: Partie 1
La deuxième partie: vous êtes ici
La troisième partie est disponible ici: Partie 3
La quatrième partie est disponible ici: Partie 4
La cinquième partie est disponible ici: Partie 5

Continuer la lecture de « MVP Challenge Azure Data & AI – Partie 2 »

MVP Challenge Azure Data & AI – Partie 1

J’ai récemment eu l’occasion de participer à un défi, le MVP Challenge, qui est un défi permettant d’explorer de nouvelles avenues. Pour ma part, j’ai choisi de compléter le défi sur un domaine qui pique ma curiosité et pour lequel je n’ai jamais pris le temps d’explorer: Data & AI. Mes prochains articles seront donc un retour sur mon périple dans cette aventure, en espérant piquer votre curiosité à vous aussi!

La deuxième partie est disponible ici: Partie 2
La troisième partie est disponible ici: Partie 3
La quatrième partie est disponible ici: Partie 4
La cinquième partie est disponible ici: Partie 5

Continuer la lecture de « MVP Challenge Azure Data & AI – Partie 1 »

Visual Studio 2022 en preview cet été

Cela fait maintenant 2 ans que la version 16 de Visual Studio est disponible, connue sous le nom de Visual Studio 2019. Malgré que plusieurs fonctionnalités ont été ajoutées depuis, beaucoup étaient en attente de la prochaine version majeure. Cette semaine, nous avons appris que la version 17, nommée Visual Studio 2022, devrait être disponible en version preview au courant de l’été. J’avais donc envie de vous partager ce qui est à venir dans cette version.

Continuer la lecture de « Visual Studio 2022 en preview cet été »

Tester un Blazored Modal avec bUnit

J’ai récemment eu besoin d’ajouter des tests unitaires sur une fenêtre modale qui utilise la librairie Blazored.Modal. Comme c’est une composante, j’ai utilisé la librairie bUnit pour mes tests. J’ai par contre rencontré quelques soucis lors de la mise en place des tests, j’ai donc cru bon vous partager ce que j’ai fait pour me simplifier la vie.

Continuer la lecture de « Tester un Blazored Modal avec bUnit »

Blazor et .NET 5 – Partie 2

Voici la deuxième partie de mon article couvrant les nouvelles fonctionnalités de .NET 5 pour Blazor, maintenant que .NET 5 est officiellement publié. Si vous n’avez pas eu la chance de lire la première partie, vous pouvez la consulter ici. Comme dans l’article précédant, ceci se veut un survol des fonctionnalités, plusieurs articles et/ou vidéos suivront pour voir le tout plus en détails.

Component InputFile

Un composant InputFile est maintenant disponible pour permettre de téléverser un fichier. Il peut aussi permettre multiples fichiers avec l’attribut multiple. Grâce à l’événement onchange, on peut ensuite facilement aller lire les fichiers téléversés grâce aux objets de System.IO. Évidemment, certaines mesures sont à prendre à la lecture de fichiers pour ne pas impacter la performance de l’application.

InputRadio et InputRadioGroup

Avant .NET 5, la gestion des boutons radio avec Blazor devait être faite manuellement. Maintenant, deux composantes sont disponibles pour faciliter la tâche. InputRadioGroup nous permet de définir un groupe de boutons radio. Sur ce groupe, on peut utiliser l’attribut bind-Value pour associer la sélection à l’intérieur du groupe à une valeur de modèle. Au niveau du InputRadio, il suffit de spécifier une valeur dans l’attribut Value. Cette valeur sera celle utilisée sur notre modèle, lorsque le bouton sera sélectionné.

Événement ontoggle

La balise details permet d’avoir un contenu qu’on peut ouvrir et fermer. En autant qu’on spécifie une balise summary à l’intérieur, tout autre contenu sera affiché ou caché. Malheureusement, l’événement ontoggle n’était pas supporté nativement par Blazor avant .NET 5. Maintenant, il est possible d’ajouter une méthode à cet événement pour faire cette gestion d’affichage de contenu.

FocusAsync

J’ai la chance de travailler sur un projet Blazor depuis quelques mois. À un moment, j’ai eu besoin de forcer le focus sur un élément suite à une action, chose que j’ai réalisé n’était pas possible avec Blazor. Il a donc fallu se tourner vers une classe TypeScript qui permettait d’envoyer un sélecteur CSS sur lequel il fallait faire le focus. Avec .NET 5, on peut maintenant le faire nativement. Il faut tout d’abord ajouter une référence sur l’élément sur lequl on veut faire le focus. Par la suite, via le code, nous pouvons appeler la méthode FocusAsync sur cet élément. Pas de JavaScript, ni de TypeScript, grâce à ce petit ajout que je trouve génial!

Attributs de classe de validation personnalités

En utilisant des frameworks CSS comme Bootstrap, il peut être utile de spécifier des classes sur des éléments lorsqu’ils sont valide ou invalide. En créant une classe dérivée de FieldCssClassProvider, il est possible de surcharger la méthode GetFieldCssClass pour y ajouter cette définition. Une fois la classe créée, il suffit de l’ajouter sur le EditContext de notre modèle avec la méthode SetFieldCssClassProvider pour que ce soit pris en charge.

Support pour IAsyncDisposable

Il est parfois nécessaire de relâcher des ressources en ne voulant pas bloquer la thread du UI. Avant .NET 5, l’interface IAsyncDisposable n’était pas disponible pour les composants Blazor. Grâce à .NET 5, on peut maintenant implémenter cet interface au niveau de nos composantes pour relâcher des ressources sans bloquer l’affichage de notre application.

Conclusion

Malgré toutes les fonctionnalités expliquées dans cet article et le précédant, il reste encore certains points que je n’ai pas détaillé. Par exemple, les routes de type catch-all, le Protected Browser Storage pour Blazor Server ou encore le prerendering pour Blazor WebAssembly. Comme ce sont des sujets qui ne se résumeraient pas nécessairement en quelques lignes, je préfère les garder pour des prochains articles. Pour connaître la liste de tous les changements de Blazor avec .NET 5, vous pouvez consulter cette page de documentation. Et évidemment, suivez-nous sur notre chaîne Youtube, notre page Facebook et ce blog pour de futurs vidéos et blogues sur toutes ces fonctionnalités!

Blazor et .NET 5 – Partie 1

Avec .NET 5 qui est à notre porte, plusieurs nouvelles fonctionnalités seront bientôt disponibles pour Blazor et tous les utilisateurs de l’écosystème .NET. Dans cet article, j’avais envie de faire un survol de quelques possibilités qui s’ouvrent à nous en ce qui concerne Blazor. D’autres suivront dans une deuxième partie à paraître très bientôt.

Continuer la lecture de « Blazor et .NET 5 – Partie 1 »