如何使用NLTK过滤具有特定结构的句子? 例如,我们有以下无上下文语法的定义:
1. S → NP VP
2. S → Aux NP VP
3. S → VP
4. NP → Pronoun
5. NP → Proper-Noun
6. NP → Det Nominal
7. Nominal → Noun
8. Nominal → Nominal Noun
9. Nominal → Nominal PP
10.VP → Verb
11.VP → Verb NP
12.VP → VP PP
13.PP → Prep NP
可以看出,定义了三种类型的句子结构:
1. S → NP VP
2. S → Aux NP VP
3. S → VP
鉴于以下句子,我想知道这句话是否符合上述三种句子结构中的任何一种。
我对乡村音乐并不多,但它具有美感的潜力,其中夹杂着喜剧和悲伤。
我的问题是,我应该如何使用NLTK?
答案 0 :(得分:2)
http://www.nltk.org/book/ch05.html
应该解释你需要的一切。基本上你必须首先对句子进行标记(将其分解为单个标记),然后使用nltk将其标识为相应的PoS标记它们。
这会返回一个元组列表,然后有很多方法可以将这些元组与你的语法中的元组进行比较。
防范未来错误链接的具体代码:
>>> text = word_tokenize("And now for something completely different")
>>> nltk.pos_tag(text)
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'),
('completely', 'RB'), ('different', 'JJ')]