我正在阅读 NLTK 书,但我似乎无法做一些看起来是构建体面语法的自然第一步。
我的目标是为特定的文本语料库构建语法。
(最初的问题:我是否应该尝试从头开始学习语法,还是应该从预定义的语法开始?如果我应该从另一种语法开始,哪个是英语的好开始?)
假设我有以下简单的语法:
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")
现在我想扩展这个语法来处理带有其他名词和动词的句子。如何在不手动定义语法的情况下将这些名词和动词添加到我的语法中?
例如,假设我希望能够解析句子“A car haswheels”。我知道提供的标记器可以神奇地找出哪些单词是动词/名词等。我如何使用标记器的输出来告诉语法“轮子”是名词?