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

BotFramework : is it possible to combine LUIS intents and normal intents?

我目前正在使用 Microsoft Botframework for NodeJS 迈出聊天机器人的第一步。

到目前为止,我已经看到 'normal' 个意图和 LUIS.ai 个意图

是否可以将两者结合起来?

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

谁能给我一个简单的例子或指出一个例子?

提前致谢

可以组合 LUIS 意向和普通意向。为此,我们将使用两个 IntentRecognizers; LuisRecognizer and RegExpRecognizer.

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

现在让我们创建我们的 IntentDialog and configure its options...

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

通过将我们的 pizzaRecognizer 和 mathRecognizer 组合成一个列表,我们可以将此列表传递给我们的 'recognizers' 属性,因此 IntentDialog 会同时使用这两个识别器。我们要 fiddle 的最后一个 属性 是 'recognizerOrder',它的默认值是 'parallel'。通过将值更改为 'series',IntentDialog 现在将首先触发我们的 RegExpRecognizer 'mathRecognizer'。如果存在得分为 1 的匹配项,则不会使用 LuisRecognizer,从而避免浪费 LUIS 端点命中。

我想重申,如果您尝试使用 RegExpRecognizers 来加速聊天机器人的响应并减少聊天机器人发出的 LUIS 调用量,您需要先将这些识别器传递到您的识别器列表中。然后你需要将你的 recognizerOrder 设置为 'series'。如果不将订单设置为系列,您的聊天机器人将继续执行 LUIS 调用。另请注意,任何匹配的意图都必须具有 1.0 的分数,以防止使用其他识别器。为了鼓励完美匹配,您应该使用 RegExp 量词 ^$ 来定义要匹配的模式的明确起点和终点。 (参见 mathRecognizer 示例)

如果准确性是您的首要任务,那么您不应更改 'recognizerOrder' 的值,这将立即使用所有识别器。

我构建了一个示例 here 供您检查。我也包含了 Luis 模型,命名为 LuisModel.json.