如何让LuisRecognizer为每种语言提供单独的模型

时间:2016-12-30 17:11:27

标签: node.js botframework microsoft-cognitive luis

我想创建一个多语言机器人,我使用LUIS来处理自然语言,但我想知道如何在同一个机器人中创建两个模型,每种语言一个。

我知道这是可能的,因为documentation

  

如果你使用像LUIS这样的系统来执行自然语言   您可以使用单独的模型配置LuisRecognizer   对于您的机器人支持的每种语言,SDK将自动生成   选择与用户首选区域设置匹配的模型。

我怎样才能做到这一点?我试过这个:

// Configure bots default locale and locale folder path.
bot.set('localizerSettings', {
    botLocalePath: "./locale", 
    defaultLocale: "es" 
});

// Create LUIS recognizer.
//LUIS English
var model = 'https://api.projectoxford.ai/luis/v2.0/apps/....';
var recognizer = new builder.LuisRecognizer(model);
//LUIS Spanish
var model_es = 'https://api.projectoxford.ai/luis/v2.0/apps/...';
var recognizer_es = new builder.LuisRecognizer(model_es);

var dialog = new builder.IntentDialog({ recognizers: [recognizer, recognizer_es] });

//=========================================================
// Bots Dialogs
//=========================================================

bot.dialog('/', dialog);

谢谢

1 个答案:

答案 0 :(得分:2)

以下是使用两种语言并允许用户在模型之间切换的机器人的示例:

var model_en = 'https://api.projectoxford.ai/luis/v2.0/apps/{YOUR ENGLISH MODEL}';
var model_es = 'https://api.projectoxford.ai/luis/v2.0/apps/{YOUR SPANISH MODEL}';
var recognizer = new builder.LuisRecognizer({'en': model_en, 'es' : model_es});

//=========================================================
// Bots Dialogs
//=========================================================
var intents = new builder.IntentDialog({ recognizers: [recognizer] });

intents.matches('hello', function (session) {
    session.send('Hello!');
});

intents.matches('goodbye', function (session) {
    session.send('Goodbye!');
});

intents.matches('spanish', function (session) {
    session.send('Switching to Spanish Model');
    session.preferredLocale('es');
});

intents.matches('english', function (session) {
     session.send('Switching to English Model');
    session.preferredLocale('en');
});

intents.matches('None', function (session) {
    if (session.preferredLocale() == 'en')
    {
        session.send('I do not understand');
    }
    else
    {
        session.send('No entiendo');
    }
});


bot.dialog('/', intents);