regex - 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})
我们认为的逻辑如下:
一个正则表达式组,用于忽略“branch”、“number”、“nr”等任何单词。等等,可以或不可以存在;
另一个忽略可以存在或不存在的任何数量的句点和空格;
最后一个来捕获分支号。
然而,在我们进行了一些测试之后,Watson 仍然无法正确识别实体,如下例所示:
"customer_branch": "nr 12345-6"
我们假设问题出在正则表达式中,但我们无法识别它;因为它在 regex101.com 上正常工作。Watson 是否正确识别排除正则表达式组,例如(?: Something_here)
?我们感谢任何提示。谢谢大家。
解决方案
推荐阅读
- c++ - 单击或拖动标题栏时如何防止计时器冻结?
- android-studio - android studio中的gridlayout有问题
- benchmarking - 当我安装 SPEC2006 时,它不会执行此步骤
- node.js - Odata $filter 总是返回带有节点 js 和 postgresql 的空数组
- javascript - 如何在画布上重复绘制?
- go - 来自天蓝色管道工件的自定义处理程序 defaultExecutablePath
- java - 查找两个特殊符号之间的字符数
- r - 是否有一个函数可以根据另一列的条件替换列中的特定值?
- sed - 如何使用 sed 在文件中的特定行附加数据,其中数据来自另一个文件
- xaml - UWP-CPP/Winrt 使 ListViewItem 数据模板的 Line Control 仅在选中时可见