Объединение токенизатора в грамматику и парсера с NLTK

Я просматриваю книгу 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 Я хочу расширить эту грамматику для обработки предложений с другими существительными и глаголами. Как мне добавить эти существительные и глаголы в грамматику, не определяя их вручную в грамматике?

Например, предположим, что я хочу разобрать предложение «У машины есть колеса». Я знаю, что поставляемые токенизаторы могут волшебным образом определить, какие слова являются глаголами / существительными и т. Д. Как я могу использовать выходные данные токенизатора, чтобы сообщить грамматике, что «колеса» - это существительное?

25
задан speedplane 1 February 2011 в 03:06
поделиться