Python - 如何提取分块元素?

时间:2017-11-05 16:37:17

标签: python nltk

我是python的新手,我正在给nltk一个机会。我发现了以下内容:

namedEnt = nltk.ne_chunk(tagged)

标记为

的地方
tagged = nltk.pos_tag(words)

和单词是句子的标记。

我想删除namedEnt的停用词。我能够首先从令牌中删除停止词然后然后块,但是不能分块然后删除停止词。
是否可能?如果是这样,我怎么能这样做?

例如:句子 - “给我今天的菜单。”被标记为

  

('get','VB')   ('我','PRP')   ('今天','JJ')   ('菜单','NN')   ('。','。')

我想得到

  

( '得到', 'VB')( '今天', 'J-J')( '菜单', 'N-N')( ' ''。')

1 个答案:

答案 0 :(得分:0)

不确定我是否得到了你想要的东西(如果你从下面的例子中过滤到nltk.ne_chunk,它可能会导致错误的输出,因为ne_chunk期望我猜一个语法句子),但你的输入输出可以在以下方式:

>>> import nltk
>>> words = ['Get', 'me', 'todays', 'menu', '.']
>>> tagged = nltk.pos_tag(words)
>>> tagged
[('Get', 'NN'), ('me', 'PRP'), ('todays', 'VBZ'), ('menu', 'NN'), ('.', '.')]
>>> filtered = [t for t in tagged if not t[0] in set(nltk.corpus.stopwords.words('english'))]
>>> filtered
[('Get', 'NN'), ('todays', 'VBZ'), ('menu', 'NN'), ('.', '.')]

再次,不确定这实际上是多么有用。您的示例中的NamedEnt返回树结构,因此您必须遍历此树以提取您感兴趣的任何内容,这可能意味着无论如何都要跳过停用词......