Développement de compétences pour Alice. Expérience avec les interfaces vocales, conseils pour les débutants

Il y a tout juste un mois, nous voulions essayer de créer une extension pour les compétences fonctionnelles d'Alice. De l'expérience de la communication dans le chat de support Yandex.Dialog , j'ai eu l'impression qu'il y avait déjà quelque chose à partager avec les fonctionnalités novices du travail sur les interfaces vocales.

Dans la note, je veux raconter mes impressions sur les trois semaines de Snow Maiden, la nouvelle année de nos enfants, et sur les questions et réponses dans le chat des développeurs de dialogues.



Pour un professionnel de VUI , la note ne sera pas nouvelle, mais les bons conseils et commentaires de personnes expérimentées sont les bienvenus. J'écris pour la première fois, ne jugez pas strictement.

Pourquoi faire attention à Alice?
Pourquoi tout cela: voix, compétences?
Comment créer une compétence?
Approche générale et erreurs courantes.
Défauts actuels de la plateforme.

Pourquoi faire attention à Alice?


Alors que les assistants vocaux à l'étranger sont déjà devenus monnaie courante, de nombreuses heures de conversations avec le robot fuient déjà dans le réseau , alors nous l'avons toujours au niveau de l'interaction avec le navigateur, des bavardages d'enfants avec Alice, du cocooning de geeks avec des maisons intelligentes. Peu de mes amis saisissent des notes et des rappels en utilisant Siri, bien que, à mon avis, c'est l'une des options les plus pratiques pour l'utiliser. Avec une forte probabilité cette année, la situation va s'améliorer, car les bases ont déjà été jetées:

  • Alice n'avait qu'un an, elle étudie, mais sait déjà combien.
  • Quittez la station Yandex - je pense qu'elle deviendra progressivement plus intelligente et plus fonctionnelle.
  • L'apparition à la vente en décembre des premières mini-enceintes affiliées low-cost.
  • L'école Alice se lance pour développer les compétences des développeurs
  • Des améliorations majeures de l'infrastructure de Yandex.Dialogs ont été annoncées, en particulier des «compétences de découverte» - un outil pour rechercher et classer facilement les compétences de développeurs tiers.

Tout cela me dit que nous sommes au début du développement des interfaces vocales en Russie et que nous avons donc décidé de commencer à étudier ces technologies.

Pourquoi tout cela: voix, compétences?


Je pense que beaucoup de gens comprennent déjà l'avantage des interfaces vocales dans certains cas, mais il ne sera pas superflu de le rappeler: c'est parfois l'option la plus appropriée. Par exemple, dans la voiture ou dans la cuisine, la cuisine, dans toute autre activité où vos mains sont occupées, il est plus pratique de donner des commandes vocales. Par exemple, il existe depuis longtemps des robots-infirmières, contrôlés par la voix , aidant aux opérations chirurgicales.

La voix est une interface familière avec laquelle les gens interagissent. Les personnes âgées et les enfants apprennent sans problème cette méthode pour obtenir des informations et gérer les gadgets.

Pour les personnes ayant une déficience visuelle, la voix et l'audition sont un canal d'interaction encore plus important avec l'environnement. À en juger par le chat Yandex.Station, cette catégorie de personnes a vraiment apprécié l'apparition d'un tel appareil qui leur a facilité la vie.

Je ne continuerai pas à énumérer les cas, si c'est intéressant, alors vous pouvez en apprendre plus sur tout cela dans la littérature spécialisée.

Skill est un programme qui implémente un certain dialogue qui est lancé par une commande d'activation donnée dans Alice et étend les capacités de l'assistant vocal de Yandex.

Comment créer une compétence?


Il existe déjà un certain nombre de bonnes compétences tierces, mais il existe de nombreuses autres niches que vous pouvez occuper et créer une compétence vraiment intéressante et utile.

Il existe plusieurs articles sur leur création, notamment sur Habré. Il y a de la documentation , il y a de brèves recommandations générales . Je n'entrerai pas dans les détails techniques de la mise en œuvre, car Je voudrais partager des approches communes pour les débutants.

Techniquement, la compétence est très similaire à un bot, à la différence qu'il ne peut pas envoyer un message lui-même, mais seulement répondre à la demande d'un utilisateur.

Voici une courte liste de ressources pour vous aider à démarrer: Bibliothèques et ressources pour les boîtes de dialogue Yandex

FAQ non officielle sur l'utilisation des boîtes de dialogue Yandex.

Le document contient des liens et des questions et réponses pertinents et peu détaillés.
Les dialogues Yandex ci-dessus.

Pour commencer le développement, vous avez besoin d'un compte sur Yandex, un serveur sur lequel le code de notre programme sera localisé et exécuté, un serveur Web et l'application elle-même, écrits dans n'importe quelle langue qui vous convient et qui peut fournir du travail via le protocole https .

Je ne donnerai pas de détails sur la mise en œuvre de mes compétences ici, s'il y a une demande de la communauté, je ferai attention à cela dans un article séparé. De plus, de tels matériaux existent déjà.

Je ne laisserai qu'un exemple d'une simple compétence en PHP avec des commentaires qui, je pense, permettront à un débutant de démarrer rapidement.

Le référentiel contient un script pour créer un environnement de développement simple qui exécute le serveur Web intégré à PHP et à l'aide du service serveo.net rend le port local accessible depuis Internet:



Enregistrez l'url https: //******.serveo.net - ce sera votre URL de webhook. Contrairement à ngrok, cette URL ne change pas au fil du temps, vous n'avez pas besoin de la modifier dans les paramètres de la boîte de dialogue. Vous pouvez vérifier la disponibilité du webhook en entrant cette URL dans le navigateur - json devrait revenir avec une erreur. C'est normal, nous n'avons pas transmis les paramètres nécessaires au script.

Ensuite, enregistrez la compétence elle-même via le lien :



Sélectionnez l'élément «Skill in Alice»



Nous remplissons tous les champs en fonction des invites et de la documentation des dialogues:



Dans le champ URL du webhook, entrez l'URL reçue précédemment.

Nous essayons de l'enregistrer, si nous avons suivi les instructions données, tout devrait fonctionner la première fois.

Dans cet article sur l'implémentation, je ne vous conseillerai que de porter une attention particulière au système de journalisation des actions des utilisateurs. Je suis dans tous les domaines problématiques d'interaction avec les utilisateurs, par exemple, je m'attends à ce que non, mais je reçois autre chose, l'écris dans le journal et le diffuse immédiatement (en tant que processus distinct pour la vitesse du webhook) sur le canal du télégramme pour le suivi opérationnel et la réponse.

Approche générale et erreurs courantes.


Comme je m'y attendais, les approches habituelles du développement Web conventionnel ou du développement de bots de télégrammes ne conviennent pas ici. La principale différence est l'imprévisibilité fréquente des réponses. La plateforme de dialogue vous permet d'ajouter des boutons avec des réponses claires à la question, mais l'utilisateur ne répond souvent pas du tout à ce qu'un programmeur habitué à suivre une logique claire attend.

Un exemple.

Voulez-vous apprendre un autre poème?
[oui] [non]

Nous nous attendons à ce que la personne réponde oui ou non, mais de nombreuses autres options nous sont venues:

  • Oui
  • oui oui
  • bien sûr je veux
  • Oui, maman, que devons-nous manger?
  • fatigué de
  • Quel temps fait-il à Novossibirsk?

Tout cela se produit pour plusieurs raisons. Une personne peut utiliser diverses phrases affirmatives: «bien sûr», «oui», «oui», «allez», etc. ainsi que les négatifs. Il arrive qu'il n'ait pas commencé à répondre à la question à temps, Alice n'écoute toujours pas la réponse, et la personne commence déjà à parler, à la fin nous entendons une partie de la phrase. Ou vice versa, après qu'une personne ait répondu, il continue la conversation avec un autre interlocuteur "dans la vraie vie". De plus, l'utilisateur de la compétence peut tout simplement ne pas comprendre ce qui se trouve à l'intérieur du dialogue tiers et fait les requêtes aliso habituelles sans laisser la commande «assez».

Si nous répétons simplement la même question sans reconnaître la bonne réponse, cela peut agacer l'utilisateur et entraîner une déception dans vos compétences et dans les interfaces vocales en général. Par conséquent, vous devez porter une attention particulière aux messages d'erreur, il est parfois préférable de reformuler la question, de la clarifier et de ne pas la poser à nouveau. L'utilisateur est susceptible de répondre à la même question de la même façon, juste plus fort.

Vous devez également essayer de prévoir diverses options pour les réponses des utilisateurs, mettre en évidence la partie sémantique. Selon la situation, il est parfois préférable de se tromper une fois en faveur d'une mauvaise reconnaissance de la réponse, et de ne pas forcer l'utilisateur à répondre clairement. Si vous ajoutez quelque chose avec le modèle aux réponses attendues (oui *), alors cela fonctionnera souvent comme il se doit, et les cas où on nous a dit de «laissez-moi tranquille» seront une exception et rien de critique ne se produira dans la logique du programme. Si, bien sûr, nous avons besoin d'une réponse précise, en raison d'une reconnaissance incorrecte dont les conséquences seront irréversibles dans le système, alors nous devrions obtenir une réponse claire de l'utilisateur. Ou si nous ne sommes pas sûrs de la réponse, nous pouvons demander des informations manquantes supplémentaires.

Chacun des cas d'interaction doit être considéré séparément.

Dans l'exemple ci-dessus, nous sommes confrontés au fait que les utilisateurs demandent un poème plus court ou sur un personnage ("y en a-t-il un plus court?", "Parlons de la fille des neiges").

Ici, nous avons des options - soit ajouter de nouveaux niveaux de menu, mais ne pas oublier l '«humanité» du dialogue ou répondre à de telles demandes conformément aux attentes de l'utilisateur, mais sans les proposer explicitement.

Peu importe comment nous avons pensé à cette partie du dialogue au début, nous avons réalisé que l'utilisation réelle montrerait mieux les souhaits de l'utilisateur, car nous avons commencé notre première compétence avec des fonctionnalités minimales, en ajoutant progressivement les capacités de notre Snow Maiden, ainsi que des réactions aux demandes que nous n'avions pas demandées auparavant.

Utilisation d'API tierces

Nous avons remarqué que pour fournir certaines fonctions utiles dans leurs compétences, les développeurs ont parfois recours à une utilisation excessive des API tierces. Cependant, n'oubliez pas que le temps de réponse de votre webhook ne doit pas dépasser 1,5 seconde. Parfois, cela peut entraîner une expérience utilisateur négative avec une compétence qui répond correctement ou écrit: «quelque chose s'est mal passé».

Caractéristiques de la reconnaissance des entités nommées : tous les noms, les villes ne sont pas reconnus correctement, et il est donc conseillé de le fournir dans votre compétence. Jusqu'à présent, afin de ne pas priver l'enfant d'un nom Yandex non reconnu de communiquer avec la Snow Maiden, nous avons dû recourir à des «béquilles». Tenez-en compte immédiatement lors du développement, afin de ne pas déranger les utilisateurs avec les noms Glory ou Hope, par exemple. Nous espérons que Yandex corrigera cela bientôt.

Prononciation des mots

Un outil de test de synthèse vocale existant ne correspond pas toujours à ce que vous avez réellement dans votre compétence. Ne soyez pas paresseux pour fournir des mécanismes pour ajouter des tts à vos réponses. Nous nous sommes appuyés sur le moteur Yandex, et certaines des phrases de notre compétence sont maintenant difficiles à étiqueter pour une meilleure prononciation (sans modifications majeures du code). Nous envisagerons pour l'avenir.

Les fonctions PHP simples mais efficaces pour la comparaison de mots flous ont beaucoup aidé:
similar_text () , levenshtein () , d'autres langues ont également des outils similaires. Eh bien, et, bien sûr, les expressions régulières, où sans eux.

Ces fonctions ont permis, par exemple, d'accepter correctement la réponse à l'énigme avec une réponse partiellement correcte - pas exactement reconnue, dans différentes déclinaisons.

Cela, bien sûr, pour les spécialistes de la PNL (Natural Language Processing) ne semblera pas sérieux, mais, encore une fois, une note - pour les débutants.

Faiblesses actuelles de la plateforme


Je décrirai brièvement les principales revendications des développeurs de Yandex Dialogs, que j'ai remarquées dans le chat.

Une modération longue, souvent en apparence illogique. Il arrive que votre compétence ne subisse pas de modération en raison du fait que, par exemple, vous avez un nom de compétence trop commun, par exemple, «météo en Crimée», même si vous avez déjà une compétence avec un nom similaire - «Météo à Severodvinsk». Je comprends donc que cela est dû au fait que, plus tôt, les exigences relatives aux noms et aux mots d'activation étaient plus simples et que le fils de la petite amie de sa mère avait de la chance pour le gars, et vous ne réussirez pas. Recherchez une expression différente ou essayez d'utiliser une marque .

La documentation n'est pas toujours vraie. La plateforme elle-même évolue rapidement, la documentation ne suit pas, est parfois interprétée différemment par les utilisateurs et les représentants de Yandex.

Jusqu'à présent, la plateforme ne fournit que des outils de base pour les compétences de débogage .
Lorsque vous ajoutez une compétence au panneau de développement, votre webhook devrait déjà répondre correctement, sinon une erreur de validation se produira. Quel genre d'erreur, qui JSON a été envoyé et qui est venu - nous ne verrons pas. Si vous avez réussi à ajouter la compétence, vous aurez un panel minimal avec le contenu de la dernière demande-réponse et c'est tout! Il n'y a aucun moyen de vérifier comment cela fonctionnera et sonnera réellement sur l'appareil avant la modération. Il existe un émulateur tiers qui fonctionne plutôt instable, pas dans tous les navigateurs, et n'est pas conforme au protocole actuel.

Il y a d'autres souhaits et demandes des développeurs, tels que: l'intégration avec une maison intelligente, déterminer l'interlocuteur par sa voix, la possibilité de choisir des voix pour des compétences avec une meilleure génération, l'intégration de systèmes de paiement, l'intégration avec un compte Yandex, y compris pour travailler avec une compétence avec différents appareils sous un seul utilisateur, système réfléchi de compétences privées. Mais ce sont des fonctions qui nécessitent une étude approfondie et, du point de vue de la sécurité, de la commodité. Je pense que Yandex sera en mesure de fournir ces opportunités lorsqu'il la mettra en œuvre au niveau approprié. Cependant, les problèmes de modération, de débogage et parfois de documentation non pertinente peuvent interférer considérablement avec les débutants pour s'habituer à la plateforme.

Il est utile que le support de chat réponde régulièrement, une communauté plus ou moins expérimentée et réactive a également été organisée, ce qui m'a beaucoup aidé, vous aidera. Le support répond à de nombreuses réclamations assez rapidement avec les messages «a pris note», «nous connaissons la documentation, nous allons la corriger», «nous décidons de la modération». Ok, nous l'attendons avec impatience.

Pour un démarrage rapide, je vous conseille de publier une compétence privée , elles sont désormais vérifiées avec les pré-requis minimum:

  • La compétence est vérifiée pour le nom et la phrase d'activation , car la base est commune à tous les développeurs.
  • Webhook doit répondre correctement aux demandes.
  • Une compétence privée doit signaler que la compétence est fermée dans son adresse de bienvenue. Afin que l'utilisateur qui l'a accidentellement lancé soit averti.

Conseil de chat:

Une fois qu'une compétence publiée peut être utilisée pour tester ses autres boîtes de dialogue en prévision de la modération en faisant passer les demandes d'un webhook publié à un développé, en filtrant par user_id.

Conclusion


En général, les interfaces vocales elles-mêmes semblaient être un sujet très intéressant, de plus en plus demandé à l'avenir, je prévois de m'y plonger davantage, en lisant de la littérature spéciale, des instructions et des conseils de services similaires étrangers (Google, Amazon, Siri, etc.).

Permettez-moi de vous rappeler à nouveau l'école Alice Yandex, si quelqu'un comme moi était intéressé par ce sujet.

Quelques liens supplémentaires:

Blog de dialogue Yandex
Chaînes Youtube Yandex Dialogs
Dialogue facile
Book Designing Voice User Interfaces
Natasha: une bibliothèque pour extraire des entités nommées
Canal télégramme informant sur les nouvelles compétences
Catalogue de compétences non officiel

Source: https://habr.com/ru/post/fr434194/


All Articles