Используя извлечение информации из этого блога post, я пытаюсь определить грамматику, которая включает добавление дат в качестве нового фрагмента со следующей грамматикой;nltk пользовательская грамматика для дат зацикливания с использованием RegexpParser
grammar = r"""
NBAR:
{<NN.*|JJ>*<NN.*>} # Nouns and Adjectives, terminated with Nouns
NP:
{<NBAR>}
{<NBAR><IN><NBAR>} # Above, connected with in/of/etc...
DATE -> MONTH SEP DAY SEP YEAR
SEP -> "/"
MONTH -> DIGIT | DIGIT DIGIT
DAY -> DIGIT | DIGIT DIGIT
YEAR -> DIGIT DIGIT DIGIT DIGIT
DIGIT -> '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '0'
Но это бросает незаконный образец куска, когда я называю chunker = nltk.RegexpParser(grammar)
, Любые идеи о том, как я могу включать даты, которые всегда представлены в виде 8 цифр DD/MM/YYYY
или в длинной форме, где месяц прописанные и дату следует порядковый индикатор st,nd, or th
, так что результатом будет DDthMONTHYYYY
.
PS. Обратите внимание на то, что парсер-парсер сопоставляется с тегами POS на токенах, а не с одиночными символами. Возможно, вы захотите сделать шаг назад и пересмотреть инструменты, которые вы используете для этой задачи ... – alexis