Language Understanding Intelligent Services
Apparence
(Redirigé depuis Luis)
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);
}
}
|