识别 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
拜托,我想知道是否可以在不定义值的情况下捕获 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