使用MS BotFramework NodeJS sdk没有LUIS

时间:2018-04-22 16:40:00

标签: luis

我目前正在开展一个访问者通常使用英语和中文互相交流的项目。

由于LUIS不支持多语言(是的,我知道它可以在某些方面提供支持,但我想要更好的服务),我想建立自己的神经网络作为REST API,以便当有人提交时他们的文字,我们可以简单地预测"意图",而我们仍在使用MS BotFramework(NodeJS)。

通过这样做,我们可以绕过MS LUIS并使用我们自己的语言理解服务。

以下是我的两个问题:

  • 以前有人这样做过吗?我可以参考哪个GitHub链接?
  • 如果我这样做,我应该使用什么BotFramework API?有一个名为" Custom Recognizer"我想知道它是否真的有用。

非常感谢您提供所有帮助。

2 个答案:

答案 0 :(得分:2)

除了Alexandru的建议之外,另一个选择是添加一个中间件,每当机器人收到聊天/请求时,它将调用您选择的NLP服务。

Botbuilder允许在处理任何对话框之前应用middleware函数,我创建了一个示例代码,以便在下面更好地理解。

const bot = new builder.UniversalBot(connector, function(session) {
  //pass to root
  session.replaceDialog('root_dialog');
})

//custom middleware
bot.use({
  botbuilder: specialCommandHandler
});

//dummy call NLP service
let callNLP = (text) => {
  return new Promise((resolve, reject) => {
    // do your NLP service API call here and resolve the result

    resolve({});
  });
}

let specialCommandHandler = (session, next) => {
  //user message here
  let userMessage = session.message.text;

  callNLP.then(NLPresult => {
    // you can save your NLP result to a session
    session.conversationData.nlpResult = NLPResult;

    // this will continue to the bot dialog, in this case it will continue to root
    // dialog
    next();
  }).catch(err => {
    //handle errors
  })
}

//root dialog
bot.dialog('root_dialog', [(session, args, next) => {
  // your NLP call result
  let nlpResult = session.conversationData.nlpResult;

  // do any operations with the result here, either redirecting to a new dialog
  // for specific intent/entity, etc.

}]);

答案 1 :(得分:0)

对于Nodejs botframework实现,您至少有两种方式:

  1. LuisRecognizer为起点创建自己的识别器。这种方法适用于单一意图的NLU和实体数组(就像LUIS一样);
  2. 创建一个SimpleDialog,其中包含一个调用所需NLU API的处理函数;