在Watson Conversation中识别未定义的实体

时间:2017-04-03 14:22:39

标签: ibm-cloud entities watson-conversation

请问,我想知道是否可以在不定义其值的情况下捕获Watson对话中的不同实体。 例如,我正在我的公司工作移动房间预订,我无法定义所有房间的名称所以我希望我的Bot根据使用的模式识别名称,例如 “明天预订@room” 无论我代替@room,它都将它作为房间名称。

谢谢

2 个答案:

答案 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