有人可以告诉我如何从以下输出中仅提取名词:
我已经使用以下程序基于给定的语法对字符串“给我电影评论”进行了标记化和解析: -
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']
>>>
现在我只想获得名词。我该怎么做?
答案 0 :(得分:6)
您不需要使用完整的解析器来获取名词。您只需使用标记器即可。您可以使用的一个功能是nltk.tag.pos_tag()。这将返回带有单词和词性的元组列表。您将能够遍历元组并找到标有“NN”或“NNS”的单词,用于名词或复数名词。
NLTK有如何记录如何使用他们的标记器。它可以在这里找到:https://nltk.googlecode.com/svn/trunk/doc/howto/tag.html这里是NLTK书中关于使用标记的章节的链接:https://nltk.googlecode.com/svn/trunk/doc/book/ch05.html
每个地方都有很多代码示例。