REGEX для поиска pos-тегов в списке - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть список предложений, которые я преобразовал в pos-теги, такие как:

tags = 
[['DET', 'ADJ', 'NOUN', 'VERB', 'ADP', 'ADJ', 'ADJ', 'NOUN', 'ADP','DET', 'NOUN', 'ADJ', 'AUX', 'PUNCT']
['DET','NOUN', 'VERB', 'ADP', 'ADJ', 'ADJ', 'NOUN', 'ADP', 'DET','NOUN', 'PUNCT']]

Я пытаюсь создать регулярное выражение, например:

  1. один DET дляначало
  2. ноль или один ADJ следующий
  3. один NOUN следующий
  4. один VERB следующий
  5. Все остальное между
  6. конечная позиция должна бытьодин НОУН, за которым следует ПУНКТ

Так, например, он будет исключать:

['DET','NOUN', 'VERB', 'ADP', 'ADJ', 'ADJ', 'NOUN', 'ADP', 'DET','NOUN', 'PUNCT']

['DET','ADJ', 'NOUN', 'VERB', 'DET', 'NOUN', 'ADP', 'DET','NOUN', 'PUNCT']

, но не примет:

['DET', 'ADJ', 'NOUN', 'VERB', 'ADP', 'ADJ', 'ADJ', 'NOUN', 'ADP','DET', 'NOUN', 'ADJ', 'AUX', 'PUNCT']


['ADJ', 'NOUN', 'VERB', 'ADP', 'AUX', 'PUNCT']

Возможно ли это?

1 Ответ

1 голос
/ 25 сентября 2019

Конечно, это так!Это регулярное выражение должно делать то, что вы ищете.

^\['DET',\s?(?:'ADJ',\s?)?'NOUN',\s?'VERB'\s?.*'NOUN',\s?'PUNCT'\]$

  • ^\[ Запустите регулярное выражение с открытой скобкой, привязанной к началу строки
  • 'DET',\s? Получите 'DET', с дополнительным пробелом после него.Вы можете удалить \s?, если знаете, что в вашем списке не будет пробелов между записями - в ваших примерах было несколько несоответствий, поэтому я добавил это, чтобы справиться с этим.
  • (?:'ADJ',\s?)? Поместите 'ADJ', в группу захвата и сделайте его необязательным.
  • 'NOUN',\s?'VERB'\s? Одно существительное, один глагол.\s? не требуется из-за подстановочного знака в следующем фрагменте, но он здесь для удобства чтения.
  • .* Что угодно!Этот подстановочный знак захватывает столько, сколько может.
  • 'NOUN',\s?'PUNCT' Конец с существительным и пунктуацией.
  • \]$ Завершите регулярное выражение с помощью закрывающей скобки, закрепленной в конце строки.

Попробуйте здесь!

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