Приоритетность слотовых высказываний над намеренными высказываниями

Modern RegEx Flavors (PCRE)

Включает C, C ++, Delphi, EditPad, Java, JavaScript, Perl, PHP (preg), PostgreSQL, PowerGREP, PowerShell, Python, REALbasic, Real Studio, Ruby , TCL, VB.Net, VBScript, wxWidgets, XML Schema, Xojo, XRegExp.PCRE совместимость может различаться

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Anywhere: . ^ $ * + - ? ( ) [ ] { } \ |


Legacy RegEx Flavors (BRE / ERE)

Включает поддержку awk, ed, egrep, emacs, GNUlib, grep, PHP (ereg), MySQL, Oracle, R, sed.PCRE версии или с помощью расширений

ERE / awk / egrep / emacs

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Вне класса символов: . ^ $ * + ? ( ) [ { } \ | & nbsp; & nbsp; & nbsp; & nbsp; Внутри класса символов: ^ - [ ]

BRE / ed / grep / sed

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ; & nbsp; внутри класса символов: ^ - [ ] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; g16]


Примечания

  • Если неуверенность a bout с определенным символом, он может быть экранирован как \xFF
  • Буквенно-цифровые символы не могут быть экранированы с помощью обратного слэша
  • Произвольные символы могут быть экранированы с помощью обратного слэша в PCRE, но не BRE / ERE (при необходимости их нужно избегать). Для PCRE ] - требуется только экранирование в классе символов, но я сохранил их в одном списке для простоты
  • . Цитированные строки выражения также должны иметь экранированные символы пробега, а часто с обратной косой чертой удвоились ( как "(\")(/)(\\.)" по сравнению с /(")(\/)(\.)/ в JavaScript)
  • . Помимо экранов, различные реализации регулярных выражений могут поддерживать различные модификаторы, классы символов, якоря, кванторы и другие функции. Для получения дополнительной информации посмотрите regular-expressions.info или используйте regex101.com , чтобы проверить свои выражения в реальном времени
1
задан dgaviola 18 March 2019 в 13:10
поделиться

1 ответ

К сожалению, у нас нет способа явно заставить Lex оставаться в пределах соответствия значений слотов и не пытаться сопоставить на уровне намерений.

Из моего опыта с этой проблемой (это часто случается, так что это постоянный баланс), значения слотов и имеют приоритет над намеренными высказываниями, когда вы находитесь в намерении. При хорошей структуре бота («намеренная схема») намеренные высказывания, кажется, проверяются только тогда, когда значение слота не находит идеального соответствия. Тем не менее, Lex может проверять оба раза и просто предоставлять наилучшее совпадение, которое в вашем случае будет намеренным высказыванием из-за одной меньшей переменной.

У нас действительно есть только одна форма контроля над этим, как мы устанавливаем значения намерений, высказываний, slotTypes и slotType.

Вот несколько предложений:

  1. Пересмотрите настройку намерений и найдите возможности, когда два намерения слишком похожи и могут быть объединены в одно намерение.
  2. Оцените сходство между высказываниями и значениями slotType и просто удалите одно в пользу другого.
  3. Попробуйте усилить список значений slotType, например: «break», «broken», «broken», «тормоз» и т. Д. (Даже с ошибками)

Я был наименее успешный с № 3 и наиболее успешный с № 1 и № 2.

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

0
ответ дан Jay A. Little 18 March 2019 в 13:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: