BotFramework:是否可以结合LUIS意图和正常意图?

我目前正在采取与微软Botframework为NodeJS聊天机器人的第一步。

到目前为止,我已经看到了“正常”的意图和LUIS.ai意图

有没有可能把两者结合起来?

我有一个.onDefault意图不是一个LUIS和一个LUIS意图,但不pipeinput是什么,它总是返回的LUIS意图的输出。

有人能给我一个简单的例子,或者指给我一个吗?

提前致谢

可以结合LUIS意图和正常意图。 要做到这一点,我们将使用两个IntentRecognizers; LuisRecognizer和RegExpRecognizer 。

let pizzaRecognizer = new builder.LuisRecognizer('YOUR-LUIS-MODEL'); let mathRecognizer = new builder.RegExpRecognizer('MathHelp', /(^mathhelp$|^\/mathhelp$)/i); 

现在让我们创build我们的IntentDialog并configuration它的选项 …

 let intents = new builder.IntentDialog({ recognizers: [mathRecognizer, pizzaRecognizer], recognizeOrder: 'series' }) 

通过将我们的pizzaRecognizer和mathRecognizer组合到一个列表中,我们可以将这个列表传递给我们的“识别器”属性,所以IntentDialog使用两个识别器。 最后一个属性是'recognitionizerOrder',它的默认值是'parallel'。 通过将值更改为“系列”,IntentDialog现在将首先触发RegExpRecognizer的“mathRecognizer”。 如果存在1分的匹配,则不会使用LuisRecognizer,节省浪费的LUIS端点命中。

我想重申,如果您正在尝试使用RegExpRecognizers来加速聊天机器人的响应,并减less聊天机器人所做的LUIS调用的数量,则需要先将这些识别器传递给您的识别器列表。 那么你需要将你的recognizerOrder设置为'series' 。 没有设置您的订单系列,您的chatbot将继续执行LUIS呼叫。 还要注意,任何匹配的意图必须有1.0的分数,以防止其他识别器被雇用。 为了鼓励完美匹配,您应该使用RegExp量词^$来定义与您的模式匹配的清晰的开始和结束点。 (例如参见mathRecognizer

如果准确性是您的首要任务,那么您不应该改变'recognizerOrder'的值,然后再一次使用所有的识别器。

我已经在这里build立了一个示例供您检查。 我也包括Luis模型,名叫LuisModel.json。