沃森实体中模式正则表达式的问题
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})
我们认为的逻辑如下:
一个正则表达式组,用于忽略任何单词,如“branch”、“number”、“nr”。和
依此类推,可以存在也可以不存在;
另一个忽略经期和
可以或不可以存在的任意数量的空格;
最后
一个捕获分支号。
然而,在我们进行了一些测试之后,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_only 和 branch_number 作为值。
你好。
我需要 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})
我们认为的逻辑如下:
一个正则表达式组,用于忽略任何单词,如“branch”、“number”、“nr”。和 依此类推,可以存在也可以不存在;
另一个忽略经期和 可以或不可以存在的任意数量的空格;
最后 一个捕获分支号。
然而,在我们进行了一些测试之后,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_only 和 branch_number 作为值。