#regex #ruta
#регулярное выражение #ruta
Вопрос:
Есть ли какой-либо способ иметь регулярные выражения в СПИСКЕ СЛОВ? Мне нужно реализовать то же, что указано в https://issues.apache.org/jira/browse/UIMA-3382 .
Или есть какой-либо альтернативный способ его решения?
РЕДАКТИРОВАТЬ : СПИСОК СЛОВ определяется как список текстовых элементов. Что делать, если у меня есть список регулярных выражений, которые я хочу пометить как однотипные. Есть ли способ это сделать?
например, я хочу найти дату в документе, но существует несколько форматов для даты, поэтому регулярные выражения — это более краткий способ охватить все возможные случаи. Итак, я пытался использовать синтаксис ниже, но совпадения были только для тех случаев, когда было одно слово без специального синтаксиса регулярных выражений.
DECLARE Date;
WORDLIST DateFormatList='DateFormat.regex';
Document{-> MARKFAST(Date, DateFormat, true,1)};
Что я могу изменить в правилах, чтобы элементы в DateFormatList обрабатывались как регулярные выражения?
Спасибо
Комментарии:
1. Поместите содержимое ссылки сюда
2. Не могли бы вы любезно расширить свой вопрос вместо того, чтобы отправлять нас на другие сайты? Мы прилагаем усилия для написания ответов… Пожалуйста, приложите усилия, чтобы написать вопрос. 🙂
Ответ №1:
Регулярные выражения в списках слов не будут поддерживаться в ближайшем будущем, если доброволец не реализует его. Проблема в том, что списки слов используют trie, а не FST для процесса поиска, что затрудняет реализацию желаемой функциональности.
В некоторых редких ситуациях можно имитировать желаемую функциональность с помощью списков слов, например, для необязательных последовательностей.
Если вы хотите определить даты, я бы настоятельно рекомендовал использовать обычные правила в UIMA Ruta. Его легче комбинировать и использовать. Общим примером является очень простое правило для этого:
ANY{INLIST(MonthsList) -> MARK(Month), MARK(Date,1,3)}
PERIOD? NUM{REGEXP(".{2,4}") -> MARK(Year)};
Если вы хотите придерживаться регулярных выражений, вы можете использовать список простых правил регулярных выражений:
"regexp1" -> Date;
"regexp2" -> Date;
"regexp3" -> Date;
Эти правила также поддерживают назначения объектов и группы захвата. Разница в функциональности, которую вы хотите использовать, заключается в синтаксисе (несколько правил вместо простого списка) и в производительности (регулярные выражения применяются последовательно).
(Я разработчик UIMA Ruta)