首页 > 解决方案 > Watson 实体中的模式正则表达式问题

问题描述

问候。

我需要 Watson 识别代表客户已下订单的公司分支机构的实体。我们目前在 customer_branch 实体上使用以下模式:

\d{1,5}-[xX\d]{1}

对话节点询问客户的分支机构,并显示以下消息:“请输入您下订单的分支机构编号,格式为 XXXXX-X:”,期望类似:

12345-6

尽管我们的大多数客户都正确输入了分行编号,但有些客户会:

分公司 12345-6

编号 12345-6

天然橡胶 12345-6

编号 12345-6

这导致 Watson 无法识别实体 customer_branch,让他们感到沮丧。为了解决这个问题,我们考虑在模式中使用以下正则表达式:

(?:(br[ae]{1}nch|n[umbe]{0,4}r))?(?:[\s.]*)?(\d{1,5}-[xX\d]{1})

我们认为的逻辑如下:

然而,在我们进行了一些测试之后,Watson 仍然无法正确识别实体,如下例所示:

"customer_branch": "nr 12345-6"

我们假设问题出在正则表达式中,但我们无法识别它;因为它在 regex101.com 上正常工作。Watson 是否正确识别排除正则表达式组,例如(?: Something_here)?我们感谢任何提示。谢谢大家。

标签: regexibm-cloudibm-watsonregex-groupwatson-assistant

解决方案


另一种解决方案是捕获整个用户输入,然后使用字符串函数提取数字。您可以首先使用搜索(包含)分支,然后使用三元运算符根据结果进行切换。

恕我直言,基于模式的实体适用于一些精确的输入,但如果您允许太多变化,则很难用单一模式捕获它。

您是否尝试过为单个实体创建多个模式?每个值都可以分配自己的模式。这样,您可以将customer_branch作为实体,将number_onlybranch_number作为值。


推荐阅读