【问题标题】:BotFramework : is it possible to combine LUIS intents and normal intents?BotFramework:是否可以结合 LUIS 意图和普通意图?
【发布时间】:2017-04-04 17:48:16
【问题描述】:

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

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

两者可以结合吗?

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

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

提前致谢

【问题讨论】:

  • 你经过this
  • 它与文档没有什么不同。它也没有解释为什么任何输入都直接进入 LUIS 意图。并不是我的代码与文档不同。
  • 机器人框架的想法是让您(机器人设计师)无需处理复杂的自然语言输入即可构建机器人。出于同样的原因,您不会收到文本输入,而是会在 Luis 识别出文本输入的意图后收到它。
  • 您作为机器人设计者的工作是实现一旦识别出意图就执行的功能。例如,this 函数处理 Luis 识别为“SearchHotels”的任何文本输入

标签: node.js botframework chatbot azure-language-understanding


【解决方案1】:

可以结合使用 LUIS 意图和普通意图。为此,我们将使用两个 IntentRecognizer; 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”。通过将值更改为“系列”,IntentDialog 现在将首先触发我们的 RegExpRecognizer 'mathRecognizer'。如果存在得分为 1 的匹配项,则不会使用 LuisRecognizer,从而节省浪费的 LUIS 端点命中。

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

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

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

【讨论】:

  • 真的像在数组中添加识别器一样简单吗?谢谢 !这会让我继续前进。很多爱
猜你喜欢
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多