Créez des chatbots intelligents sur Android avec IBM Watson

Si vous avez déjà parlé à des assistants personnels vocaux tels que Siri ou Google Now, ou discuté avec l’un des nombreux robots basés sur du texte actifs sur des plates-formes de messagerie telles que Facebook Messenger et Kik, vous réalisez probablement à quel point il est amusant, intuitif et des interfaces utilisateur conversationnelles puissantes peuvent être. Cependant, comme la plupart des langages naturels sont extrêmement complexes, la création de telles interfaces à partir de zéro a tendance à être difficile. Heureusement, il y a IBM Watson.

En utilisant le Conversation IBM Watson service, vous pouvez créer des interfaces utilisateur conversationnelles basées sur l’IA en quelques minutes, souvent avec seulement quelques lignes de code. Dans ce didacticiel, je vais vous présenter le service et vous montrer comment l’utiliser dans les applications Android.

Conditions préalables

Pour tirer le meilleur parti de ce didacticiel, vous aurez besoin des éléments suivants:

1. Créer un service de conversation

Avant de pouvoir utiliser l’API IBM Watson Conversation, vous devez créer un service de conversation sur la plate-forme IBM Bluemix et acquérir les informations de connexion correspondantes. Pour ce faire, connectez-vous au Bluemix console, aller vers Services> Watsonet appuyez sur le Créer un service Watson bouton. Sur l’écran suivant, choisissez Conversation du catalogue des services disponibles.

Catalogue de services Watson

Dans le formulaire de configuration qui s’affiche ensuite, saisissez un nom approprié pour le service et appuyez sur le bouton Créer bouton.

Formulaire de configuration du service de conversation

2. Créer un espace de travail de conversation

Un service de conversation ne peut fonctionner que s’il est associé à au moins un espace de travail de conversation. Pour l’instant, vous pouvez considérer un espace de travail comme un ensemble de règles et de détails de configuration, qui définit les capacités et la personnalité de votre interface utilisateur conversationnelle.

La console Bluemix dispose d’un outil simple d’utilisation qui vous permet de créer et de gérer des espaces de travail. Pour le lancer, appuyez sur le Outil de lancement bouton.

Lanceur d'outils d'espace de travail de conversation

Dans l’écran suivant, appuyez sur Créer bouton pour créer un nouvel espace de travail. Dans la boîte de dialogue qui apparaît, donnez un nom significatif à l’espace de travail et choisissez une langue pour celui-ci.

Boîte de dialogue de configuration de l'espace de travail

Une fois l’espace de travail créé, vous devez y ajouter des intentions, des entités et des détails de boîte de dialogue.

Entités d'intention et onglets de boîte de dialogue

Alors que les intentions définissent les actions qu’un utilisateur peut effectuer à l’aide de votre interface utilisateur conversationnelle, les entités définissent des objets qui sont pertinents pour ces actions. Par exemple, dans la phrase «réserver un billet de New York à Chicago», «réserver un billet» serait une intention, et «New York» et «Chicago» seraient des entités. Les détails de la boîte de dialogue définissent les réponses réelles générées par l’interface utilisateur conversationnelle et le déroulement de ses conversations.

Étape 1: créer des intentions

Dans ce tutoriel, nous allons créer un chatbot Android très simple capable d’effectuer les actions suivantes:

  • saluer l’utilisateur
  • se présenter
  • citation citations inspirantes

En conséquence, notre chatbot a besoin de trois intentions.

appuyez sur la Créer un nouveau bouton pour créer le premier intent. Dans le formulaire qui apparaît, nommez l’intention #Salutation, fournissez quelques exemples de mots ou de phrases que l’utilisateur pourrait utiliser pour l’intention, tels que “salut” et “bonjour”, et appuyez sur le bouton Terminé bouton.

Création d'intention d'accueil

La meilleure chose à propos du service Watson Conversation est qu’il s’entraîne intelligemment à l’aide des exemples d’entrées utilisateur que vous fournissez à l’intention. Par conséquent, il pourra répondre à plusieurs variations de ces exemples d’entrées. Par exemple, il sera en mesure de faire correspondre correctement des mots et des expressions tels que “bonjour”, “bonjour” et “yo!” à la #Salutation intention.

appuyez sur la Créer un nouveau à nouveau pour créer l’intention suivante. Nomme le #Nomet fournissez les exemples utilisateur suivants.

Création d'intention de nom

De même, nommez la troisième intention #Citation requiseet fournissez les exemples utilisateur suivants.

Création d'intention RequestQuote

Étape 2: créer une boîte de dialogue

Notre chatbot est si simple que nous n’avons pas besoin de définir d’entités pour lui. Par conséquent, nous pouvons maintenant commencer directement à spécifier comment il répond à chaque intention que nous avons créée.

Commencez par vous rendre au Dialogue et en appuyant sur le Créer bouton. Dans l’écran suivant, vous verrez que deux nœuds de dialogue sont créés automatiquement pour vous: l’un nommé Bienvenue, qui est de saluer l’utilisateur, et un nommé Rien d’autre, qui consiste à capturer les entrées que le bot ne comprend pas.

En relation :  10 jeux de téléphone amusants pour jouer sur du texte avec vos amis
Noeuds de dialogue par défaut

Pour l’instant, laissons le Rien d’autre tel quel, et configurez le Bienvenue nœud. Dans la boîte de dialogue qui apparaît, saisissez #Salutation dans le Si le bot reconnaît champ, puis ajoutez quelques réponses. Évidemment, plus vous ajoutez de réponses, plus votre chatbot sera humain.

Boîte de dialogue d'accueil

Ensuite, créez un nouveau nœud pour le #Nom l’intention en appuyant sur Ajouter un nœud bouton. Encore une fois, remplissez le formulaire indiqué de manière appropriée.

Boîte de dialogue pour le nom

Le nœud pour le #Citation requise l’intention va être légèrement différente. Nous ne taperons pas manuellement quelques citations inspirantes comme réponses de ce nœud, car cela rendrait notre bot trop statique et inintéressant. Au lieu de cela, notre chatbot Android devrait être en mesure de récupérer des devis à partir d’une API externe. Par conséquent, les réponses de ce nœud doivent être des phrases qui demandent à l’utilisateur d’attendre pendant que le bot recherche un nouveau devis.

Dialogue pour RequestQuote

À ce stade, notre espace de travail est prêt. Vous pouvez le tester immédiatement en cliquant sur l’icône de la bulle de dialogue. N’hésitez pas à le tester avec une variété de phrases pour vous assurer qu’il y associe les bonnes intentions.

Tester l'espace de travail

Étape 3: Déterminez les informations d’identification

Pour pouvoir utiliser le service de conversation dans une application Android, vous aurez besoin de son nom d’utilisateur et de son mot de passe. De plus, vous aurez besoin de l’ID de l’espace de travail Conversation. Par conséquent, allez à la Déployer et passez à la Identifiants languette.

Vous devriez maintenant pouvoir voir les informations d’identification dont vous avez besoin. Après les avoir tous notés, vous pouvez fermer la console Bluemix.

Onglet Identifiants

3. Configuration du projet Android Studio

Bien qu’il soit possible d’interagir avec le service Conversation à l’aide de n’importe quelle bibliothèque de réseau Android, l’utilisation du SDK Watson Java est une meilleure idée car il offre une API très intuitive et de haut niveau. Pour l’ajouter à votre projet Android Studio, ajoutez ce qui suit compile dépendance dans le app modules build.gradle fichier:

De plus, nous aurons besoin de la bibliothèque de réseau Fuel pour récupérer des citations inspirantes à partir d’un serveur distant, et de la bibliothèque de support Design pour pouvoir travailler avec quelques widgets Material Design.

Fuel et Watson Java SDK exigent que votre application INTERNET permission, alors n’oubliez pas de la demander dans le fichier manifeste de votre projet:

Enfin, ouvrez le res / values ​​/ strings.xml et ajoutez le nom d’utilisateur et le mot de passe du service de conversation, ainsi que l’ID de l’espace de travail de conversation comme <string> Mots clés:

Vous pouvez maintenant appuyer sur le Synchroniser maintenant bouton pour terminer la configuration du projet.

4. Définition d’une mise en page

Nous allons créer un bot basé sur du texte dans ce didacticiel. Par conséquent, la mise en page de notre application doit contenir un EditText widget où les utilisateurs peuvent taper leurs messages, et un TextView widget où la conversation utilisateur-bot peut être affichée. En option, vous pouvez placer le EditText widget à l’intérieur d’un TextInputLayout conteneur pour vous assurer qu’il respecte les directives de conception des matériaux.

C’est aussi une bonne idée de placer le TextView widget à l’intérieur d’un ScrollView conteneur pour vous assurer que les longues conversations ne sont pas tronquées.

Notez que nous avons défini la valeur du EditText widget imeOptions attribuer à actionDone. Cela permet aux utilisateurs d’appuyer sur un Terminé bouton sur leurs claviers virtuels lorsqu’ils ont fini de taper leurs messages.

5. Utilisation du service de conversation

le ConversationService La classe du kit de développement logiciel Watson possède toutes les méthodes dont vous aurez besoin pour communiquer avec le service Conversation. Par conséquent, la première chose que vous devez faire dans votre Activity class est d’en créer une instance. Son constructeur attend une date de version, le nom d’utilisateur du service et son mot de passe.

En relation :  6 applications d'intelligence artificielle qui vous aideront à atteindre vos objectifs

Ensuite, pour pouvoir travailler avec les widgets présents dans le fichier XML de mise en page, vous devez obtenir des références à ceux-ci en utilisant le findViewById() méthode.

Lorsque les utilisateurs auront fini de taper leurs messages d’entrée, ils appuieront sur la touche Terminé bouton sur leurs claviers virtuels. Pour pouvoir écouter cet événement en appuyant sur un bouton, vous devez ajouter un OnEditorActionListener à la EditText widget.

À l’intérieur de l’auditeur, vous pouvez appeler le getText() méthode de la EditText widget pour récupérer le message de l’utilisateur.

le TextView widget affichera à la fois les messages de l’utilisateur et les réponses du bot. Par conséquent, ajoutez le message au TextView widget utilisant son append() méthode.

Le message de l’utilisateur doit être envoyé au service de conversation encapsulé dans un MessageRequest objet. Vous pouvez en créer un facilement en utilisant le MessageRequest.Builder classe.

Une fois la demande prête, vous devez la transmettre au message() méthode de la ConversationService objet, ainsi que l’ID de l’espace de travail. Enfin, pour envoyer réellement le message au service de conversation, vous devez appeler le enqueue() méthode.

Parce que le enqueue() La méthode s’exécute de manière asynchrone, vous aurez également besoin d’un ServiceCallback object pour obtenir la réponse du service.

À l’intérieur de onResponse() méthode, vous pouvez appeler la getText() méthode de la MessageResponse objet pour obtenir la réponse du service Conversation.

Vous pouvez maintenant ajouter la réponse à la TextView widget en utilisant à nouveau son append() méthode. Cependant, assurez-vous de le faire à l’intérieur du runOnUiThread() parce que vous êtes actuellement sur un autre thread.

Notre bot est presque prêt. Si vous essayez d’exécuter l’application, vous pourrez obtenir des réponses correctes pour le #Salutation et #Nom intentions. Cependant, il ne peut toujours pas réciter de citations inspirantes. Par conséquent, nous devons maintenant ajouter du code pour rechercher explicitement le #Citation requise intent et générer une réponse manuellement.

Pour extraire le nom de l’intention détectée du MessageResponse objet, vous devez appeler son getIntents() méthode, qui renvoie une liste de MessageResponse.Intent objets, choisissez le premier élément et appelez son getIntent() méthode.

Il existe de nombreux sites Web avec des API gratuites que vous pouvez utiliser pour récupérer des citations inspirantes. Forismatique est l’un d’eux. Son API REST fournit des citations sous forme de texte brut, que vous pouvez directement utiliser dans votre application.

Pour envoyer une requête HTTP à l’URL de l’API Forismatic, il vous suffit d’appeler le get() méthode de la Fuel classe. Étant donné que la méthode s’exécute de manière asynchrone, vous devez gérer la réponse HTTP en appelant le responseString() méthode et en passant un Handler s’y opposer.

À l’intérieur de success() méthode du gestionnaire, vous pouvez simplement ajouter le devis à la TextView widget. Le code suivant vous montre comment:

Le bot est maintenant terminé et sera en mesure de générer les bonnes réponses pour toutes les intentions que nous avons ajoutées à l’espace de travail.

Le chatbot Android en cours d'exécution

Conclusion

Les interfaces utilisateur conversationnelles font fureur aujourd’hui. Ils sont si faciles à utiliser que tout le monde les aime. Dans ce didacticiel, vous avez appris les bases de la création de telles interfaces sur la plate-forme Android à l’aide du service IBM Watson Conversation.

Le service peut faire beaucoup plus. Pour en savoir plus, vous pouvez vous référer au documentation officielle.

Et n’oubliez pas de consulter certains de nos autres articles sur l’utilisation de l’apprentissage automatique pour vos applications Android!

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.