2017-04-03 51 views
0

請問我是否可以在不定義它們的值的情況下捕捉沃森對話上的不同實體。 例如,我正在使用移動設備在我的公司預訂房間,但無法定義所有房間的名稱,因此我希望Bot根據使用的模式識別名稱,例如 「Book @room for明天「 以及任何我用來放置@room的地方,它都將它作爲房間名稱。在沃森對話中識別未定義的實體

謝謝

+0

這個名字是數字嗎? –

+0

你可以使用這個正則表達式。 Watson對話支持SPEL – Dudi

+0

@SayuriMizuguchi不,這不是 –

回答

0

編輯:下面的解決方案仍然有效,但現在由杜迪·討論較多的系統解決方案模式的實體。由於遺留原因,此處留下此處。


現在沃森對話服務中的正則表達式支持可能是最好的選擇。

爲了您的具體的例子,你可以用下面的表達式對話框節點狀態中:

input.text.matches('^[bB]ook[^\w]+(\w+).+ (tomorrow|today)$')

並在該節點裏面可以添加以下的正則表達式節點context提取第二個字(或後字「書」)給一個變量:

"room" : "<? input.text.extract('^[bB]ook[^\\w]+(\\w+).+ (tomorrow|today)$',1) ?>" (注意,在context不像條件實際上你需要逃避\另一個\

這將匹配諸如「今天的書衛生間」或「明天的書r101」的輸入。

一個很好的地方,你可以試試你的正則表達式的表達式是https://regex101.com/

+0

問題是,我的房間有時可以有一個像帕布羅畢加索房間, –

+0

你可以通過列出所有特殊房間名稱而不是使用\ w +來擴展正則表達式,然而,它可能會變得更大......例如^ [bB] ook [^ \ w] +(Pablo Picasso | \ w +)。+(明天|今天)$也可以在「for tomorrow」字符串之前匹配更多單詞。 –

+0

毫米如果我必須列出所有的房間名稱,這意味着將它們添加到實體會更好。認爲這是對話的缺點之一 –