Я использую RegexpParser NLTK для получения фраз из слов с POS-тегами. Например:
grammar = """
FOUND:{<NNP>+<CD>+<,>+<CD>}
...
"""
pos_tagged_words = [('February', 'NNP'), ('14', 'CD'), (',', ','), ('1993', 'CD')]
result = nltk.RegexpParser(grammar).parse(pos_tagged_words)
Есть ли способ сопоставить тег подстановочного знака? Если бы это сработало, я бы искал что-то вроде этого:
FOUND:{<NNP>?<.>*<VBZ>}
Где ‹.> — подстановочный знак.
РЕДАКТИРОВАТЬ:
Нашел довольно плохой способ сделать это, который на самом деле не включает все символы. Все равно был бы признателен за специальный подстановочный знак.
FOUND:{<NNP>?<[A-Z]+|[:punct:]+>*<VBZ>}