Language Understanding Intelligent Services
De Banane Atomic
Aller à la navigationAller à la recherche
Liens
Description
Service qui permet de comprendre le langage naturel en déterminant l’intention d'une phrase et en ciblant les mots clés.
Vocabulaire
Intent | représente l'intention que LUIS prête à une phrase |
Utterance | représente les phrase interprétées par LUIS, ainsi que les exemples de phrases fournis pour un intent donné. |
Entity | représente une variable dans une phrase. Par exemple city est une entity qui peut prendre la forme de n'importe quel nom de ville. |
Design Model
Définir les intents
- Créer un intent
- Associer 5 utterances
- Définir des entities (prebuilt entities)
Améliorations
Review endpoint utterances
Liste les utterances dont le résultat d'affectation d'intent est faible.
Autre
Test LUIS
Endpoint + requête:
- https://westeurope.api.cognitive.microsoft.com/luis/v2.0/apps/xxx?
- subscription-key=<KEY>&
- verbose=true&
- timezoneOffset=0&
- q=hi
Ajouter un intent
- MyApp → Intents → Create new intent
- Ajouter des utterances (exemples de phrases)
- Définir où se trouve les Entities (mots correspondant à des variables: lieu, date) dans les Utterences
- Train
- Test
- Publish (récupérer le endpoint et la key)
Projet C# Luis
Dialogs\RootLuisDialog.cs |
[Serializable] public partial class RootLuisDialog : LuisDialog<object> { private JObject _lastIntent = null; [LuisIntent("")] [LuisIntent(Intent_None)] public async Task None(IDialogContext context, LuisResult result) { _lastIntent = JObject.FromObject(result); IMessageActivity mess = context.MakeMessage(); mess.Text = getExcuseMessage(result); await context.PostAsync(mess); context.Wait(MessageReceived); } [LuisIntent("MyIntent")] public Task MyIntent(IDialogContext context, LuisResult result) { _lastIntent = JObject.FromObject(result); context.Call(new MyIntentDialog(), resumeAfterChildDialog); return Task.CompletedTask; } private Task resumeAfterChildDialog(IDialogContext context, IAwaitable<IMessageActivity> result) { context.Wait(MessageReceived); return Task.CompletedTask; } } |
Dialogs\MyIntentDialog.cs |
[Serializable] public class MyIntentDialog : IDialog<IMessageActivity> { private JObject _luisResult = null; private string _parameter = string.Empty; public MyIntentDialog(LuisResult result) { _luisResult = JObject.FromObject(result); _parameter = result.Entities.FirstOrDefault(e => e.Type == RootLuisDialog.Entity_Device)?.Entity; } public async Task StartAsync(IDialogContext context) { if (!string.IsNullOrWhiteSpace(_parameter)) { await process(context); } else { await context.PostAsync("Please specify Device type"); context.Wait(resumeAfterUserParamInput); } } private async Task Process(IDialogContext context) { IMessageActivity message = context.MakeMessage(); message.Text = $"My message!"; await context.PostAsync(message); } } |