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。