沃森实体中模式正则表达式的问题

Problem with pattern regex in Watson's entity

你好。

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

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

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

12345-6

虽然我们的大多数客户都正确输入了分行号码,但有些客户会:

branch 12345-6

nr 12345-6

nr. 12345-6

number 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)?我们感谢任何提示。谢谢大家。

另一种解决方案是捕获整个用户输入,然后使用 string functions to extract the number. You could use first a search (contains) for branch, then a ternary operator 根据结果进行切换。

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

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