【问题标题】:Recognize undefined Entities in Watson Conversation识别 Watson Conversation 中的未定义实体
【发布时间】:2017-04-03 14:22:38
【问题描述】:

请问,我想知道是否可以在 Watson 对话中捕获不同的实体而不定义它们的值。 例如,我正在为我的公司开发一个用于房间预订的移动设备,我无法定义所有房间的名称,所以我希望我的机器人仅根据使用的模式识别名称,例如 “为明天预订@room” 无论我用什么代替@room,它都将它作为房间名称。

谢谢

【问题讨论】:

  • 这个名字是数字吗?
  • 您可以为此使用正则表达式。 Watson Conversation 支持 SPEL
  • @SayuriMizuguchi 不,不是
  • @Dudi 这对短语中的单词也有效吗?或者我必须在脚本中这样做
  • 您可以在对话工具中进行。更多关于对话方法的细节在这里ibm.com/watson/developercloud/doc/conversation/…

标签: ibm-cloud entities watson-conversation


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    编辑:下面的解决方案仍然有效,但现在 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/

    【讨论】:

    • 问题是我的房间有时会有一个像 Room Pablo Picasso 这样的组合命名,
    • 您可以通过列出所有特殊房间名称而不是使用 \w+ 来扩展正则表达式,但是,它可能会变得更大......例如^[bB]ook[^\w]+(Pablo Picasso|\w+).+ (tomorrow|today)$ 或者,您可以在“for tomorrow”字符串之前匹配更多单词。
    • mm 如果我必须列出所有房间名称,这意味着我最好将它们添加到实体中。认为这是 Conversation 的缺点之一
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多