2017-04-04 99 views
1

我目前正在採取與微軟Botframework爲NodeJS聊天機器人的第一步。BotFramework:可以結合LUIS意圖和正常意圖嗎?

我到目前爲止看到的「正常」的意圖和LUIS.ai意圖

是否可以將兩者結合起來?

我有一個.onDefault意圖不是一個LUIS和一個LUIS意圖,但不管輸入是什麼,它總是返回LUIS意圖的輸出。

有人能給我一個快速的例子或指向我嗎?

在此先感謝

+0

你有沒有經過[this](https://github.com/Microsoft/BotBuilder-Samples/tree/master/Node/intelligence-LUIS) –

+0

這與文檔沒有什麼不同。 它也不能解釋爲什麼任何輸入直接到LUIS意圖。 這不是說我的代碼與文檔不同。 – Kyriediculous

+0

bot框架的思想是讓你(一個bot設計者)能夠構建一個bot,而不必處理自然語言輸入的複雜性。出於同樣的原因,您沒有收到文本輸入,而是在Luis識別它之後收到文本輸入的意圖。 –

回答

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組合成一個列表,我們可以通過這個名單我們的「識別」屬性,因此IntentDialog用途兩個認識者。我們要去處理的最後一個屬性是'recognitionizerOrder',它的默認值是'parallel'。通過將值更改爲'series',IntentDialog現在將首先觸發我們的RegExpRecognizer'mathRecognizer'。如果存在匹配得分爲1的匹配項,則不會使用LuisRecognizer,從而節省浪費的LUIS端點命中。

我想重申一下,如果您想要使用RegExpRecognizers來加速聊天機器人的響應並減少聊天機器人的LUIS呼叫數量,您需要首先將這些識別器傳遞給您的識別器列表。然後,您需要將recognizerOrder設置爲'series'。如果沒有將您的訂單設置爲系列,您的chatbot將繼續執行LUIS呼叫。還要注意,任何匹配的意圖都必須得分1.0以防止其他識別器被僱用。爲了鼓勵完美匹配,您應該使用RegExp量詞^$來定義與您的模式匹配的清晰的開始和結束點。 (例如,請參閱mathRecognizer

如果準確性是您的首要任務,那麼您不應該更改'recognizerOrder'的值,該值將立即使用所有識別器。

我建立了一個示例here供您檢查。我還包括Luis模型,名爲LuisModel.json。

+0

是否真的如簡單的添加識別器到陣列上? 謝謝!這會讓我走。 很愛 – Kyriediculous