2

如何使用 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 来做到这一点?

4

1 回答 1

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')]
于 2013-05-06T00:47:01.053 回答