沃森实体中的模式重构问题。

问题描述 投票:0回答:1

您好,我需要Watson识别一个代表客户下订单的本公司分支机构的实体。

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

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

对话框节点询问客户的分支机构,并给出以下信息:"请输入分支机构的编号 "请输入您下单的分支机构的号码,在这个模式中XXXX-X:",期望类似:

12345-6

虽然大多数客户都能正确输入分行号码,但也有部分客户打错了。

分公司12345-6

nr 12345-6

编号:12345-6

编号12345-6

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

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

我们认为逻辑如下:

  • 一个regex组用来忽略任何像 "branch","number","nr. "之类的词,可以或不可以出现。

  • 另一个是忽略任何数量的句号和空格,可以或不可以出现。

  • 最后一个是用来捕捉分支号的

然而,在我们做了一些测试后,Watson仍然不能正确识别实体,就像下面的例子。

"customer_branch": "nr 12345-6"

我们认为问题出在regex上,但我们无法识别它;因为它在regex101.com上工作正常。Watson是否能正确识别排除性的regex组,如 (?: Something_here)? 我们感谢任何提示。谢谢大家。

regex ibm-cloud ibm-watson regex-group watson-assistant
1个回答
0
投票

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

IMHO基于模式的实体对于一些精确的输入是有效的,但如果你允许太多变化,就很难用一个模式来捕捉它。

你有没有试过为一个实体创建多个模式?每个值都可以有自己的模式分配。这样你就可以有 客户_分行 作为实体和 仅限数量分支号码 作为值。

© www.soinside.com 2019 - 2024. All rights reserved.