识别 Watson Conversation 中的未定义实体

Recognize undefined Entities in Watson Conversation

拜托,我想知道是否可以在不定义值的情况下捕获 Watson 对话中的不同实体。 例如,我正在为我公司的房间预订使用 Mobile up,我无法定义所有房间的名称,所以我希望我的 Bot 仅根据使用的模式识别名称 "Book @room for tomorrow" 无论我用什么代替@room,它都将它作为房间名称。

谢谢

编辑:下面的解决方案仍然有效,但现在 Dudi 讨论的模式实体是更系统的解决方案。出于遗留原因将此留在此处。


目前,Watson Conversation Service 中的正则表达式支持可能是最好的选择。

对于您的特定示例,您可以在对话节点条件中使用以下表达式:

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

在该节点内,您可以将以下正则表达式添加到节点 context 以将第二个单词(或 "Book" 之后的单词)提取到变量中:

"room" : "<? input.text.extract('^[bB]ook[^\w]+(\w+).+ (tomorrow|today)$',1) ?>" (请注意,在 context 中,您需要使用另一个 \ 实际转义 \

这将匹配 "book bathroom for today" 或 "book r101 for tomorrow" 等输入。

您可以尝试正则表达式的好地方是 https://regex101.com/

现在可以查看 https://console.bluemix.net/docs/services/conversation/entities.html#pattern-entities

必须在字段中以正则表达式形式输入模式。 例如internationalPhone: ^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$, e.g., +44 1962 815000