我目前正在开展一个访问者通常使用英语和中文互相交流的项目。
由于LUIS不支持多语言(是的,我知道它可以在某些方面提供支持,但我想要更好的服务),我想建立自己的神经网络作为REST API,以便当有人提交时他们的文字,我们可以简单地预测"意图",而我们仍在使用MS BotFramework(NodeJS)。
通过这样做,我们可以绕过MS LUIS并使用我们自己的语言理解服务。
以下是我的两个问题:
非常感谢您提供所有帮助。
答案 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实现,您至少有两种方式:
LuisRecognizer
为起点创建自己的识别器。这种方法适用于单一意图的NLU和实体数组(就像LUIS一样); SimpleDialog
,其中包含一个调用所需NLU API的处理函数;