Я просматриваю книгу NLTK и не могу сделать что-то, что могло бы показаться естественным первым шагом к построению достойной грамматики.
12126] Моя цель - построить грамматику для конкретного корпуса текста.
(Начальный вопрос: Стоит ли мне даже пытаться начать грамматику с нуля или мне следует начать с предопределенной грамматики? Если я должен начать с другой грамматики, с какой лучше начать английский?)
Предположим, у меня есть следующая простая грамматика:
simple_grammar = nltk.parse_cfg("""
S -> NP VP
PP -> P NP
NP -> Det N | Det N PP
VP -> V NP | VP PP
Det -> 'a' | 'A'
N -> 'car' | 'door'
V -> 'has'
P -> 'in' | 'for'
""");
Эта грамматика может анализировать очень простое предложение, например:
parser = nltk.ChartParser(simple_grammar)
trees = parser.nbest_parse("A car has a door")
Now Я хочу расширить эту грамматику для обработки предложений с другими существительными и глаголами. Как мне добавить эти существительные и глаголы в грамматику, не определяя их вручную в грамматике?
Например, предположим, что я хочу разобрать предложение «У машины есть колеса». Я знаю, что поставляемые токенизаторы могут волшебным образом определить, какие слова являются глаголами / существительными и т. Д. Как я могу использовать выходные данные токенизатора, чтобы сообщить грамматике, что «колеса» - это существительное?