从名词短语中提取名词
有人能告诉我怎么从下面的输出中只提取名词吗?
我已经对字符串“给我电影的评论”进行了分词和解析,按照给定的语法使用了以下步骤:
sent=nltk.word_tokenize(msg)
parser=nltk.ChartParser(grammar)
trees=parser.nbest_parse(sent)
for tree in trees:
print tree
tokens=find_all_NP(tree)
tokens1=nltk.word_tokenize(tokens[0])
print tokens1
然后得到了以下输出:
>>>
(S
(VP (V Give) (Det me))
(NP (Det the) (N review) (PP (P of) (N movie))))
(S
(VP (V Give) (Det me))
(NP (Det the) (N review) (NP (PP (P of) (N movie)))))
['the', 'review', 'of', 'movie']
>>>
现在我只想得到名词。我该怎么做呢?
1 个回答
6
你不需要使用复杂的解析器来获取名词。其实你只需要用一个标记工具就可以了。你可以使用一个叫做nltk.tag.pos_tag()的函数。这个函数会返回一个包含单词和词性的小列表。你可以遍历这些小列表,找到标记为'NN'(单数名词)或'NNS'(复数名词)的单词。
NLTK提供了一个使用他们标记工具的指南,你可以在这里找到:https://nltk.googlecode.com/svn/trunk/doc/howto/tag.html,还有一本书的章节专门讲解如何使用标记工具,链接在这里:https://nltk.googlecode.com/svn/trunk/doc/book/ch05.html
在这些地方都有很多代码示例。