Проблема с регулярным выражением шаблона в сущности Watson - PullRequest
0 голосов
/ 06 мая 2020

Приветствую.

Мне нужно, чтобы 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})

logi c, по нашему мнению, выглядит следующим образом:

  • регулярное выражение группа, чтобы игнорировать любые слова, такие как «ветвь», «число», «номер». и так далее, которые могут или не могут присутствовать;

  • другое, чтобы игнорировать точки и пробелы в любом количестве, которое может или не может присутствовать;

  • и, наконец, один для захвата номера ветки.

Однако после некоторых проведенных нами тестов Watson все еще не распознает объект правильно, как в примере ниже. :

"customer_branch": "nr 12345-6"

Мы предполагаем, что проблема в регулярном выражении, но нам не удалось ее идентифицировать; так как он корректно работает на regex101.com. Правильно ли Watson распознает группы регулярных выражений исключения, такие как (?: Something_here)? Мы ценим любые советы. Спасибо всем.

1 Ответ

0 голосов
/ 07 мая 2020

Альтернативным решением было бы захватить весь ввод данных пользователем, а затем использовать строковые функции для извлечения числа. Вы можете сначала использовать поиск (содержит) для ветки, а затем тернарный оператор для переключения в зависимости от результата.

Сущности на основе шаблонов IMHO работают для некоторого точного ввода, но если вы разрешите слишком много вариаций, сложно уловить их с помощью одного шаблона.

Вы пробовали создать несколько шаблонов для одного объекта? Каждому значению может быть назначен свой собственный шаблон. Таким образом, у вас может быть customer_branch как сущность и number_only и branch_number как значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...