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

时间:2017-04-04 17:48:16

标签: node.js botframework chatbot luis

我目前正在使用微软Botframework for NodeJS进入聊天机器人的第一步。

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

是否可以将两者合并?

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

有人可以给我一个简单的例子或指向我吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

可以组合LUIS意图和正常意图。为此,我们将使用两个IntentRecognizers; LuisRecognizerRegExpRecognizer

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

现在让我们创建IntentDialog并配置其options ...

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

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

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

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

我已经构建了一个示例here供您查看。我还包括Luis模型,名为LuisModel.json。