Language Understanding Intelligent Services
Apparence
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);
}
}
|