请问,我想知道是否可以在不定义其值的情况下捕获Watson对话中的不同实体。 例如,我正在我的公司工作移动房间预订,我无法定义所有房间的名称所以我希望我的Bot根据使用的模式识别名称,例如 “明天预订@room” 无论我代替@room,它都将它作为房间名称。
谢谢
答案 0 :(得分:0)
编辑:下面的解决方案仍然有效,但现在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
与条件不同,您需要与另一个\
实际转义\
这将匹配诸如“今天的书籍浴室”或“明天预订r101”等输入。
您可以尝试使用正则表达式表达式的好地方是https://regex101.com/
答案 1 :(得分:0)
现在可以查看https://console.bluemix.net/docs/services/conversation/entities.html#pattern-entities
必须在字段中输入模式作为正则表达式。
例如internationalPhone: ^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$, e.g., +44 1962 815000