san*_*ang 5 python tags tree chunking nltk
我正试图在nltk中使用ne_chunk和pos_tag来判断一个句子.
from nltk import tag
from nltk.tag import pos_tag
from nltk.tree import Tree
from nltk.chunk import ne_chunk
sentence = "Michael and John is reading a booklet in a library of Jakarta"
tagged_sent = pos_tag(sentence.split())
print_chunk = [chunk for chunk in ne_chunk(tagged_sent) if isinstance(chunk, Tree)]
print print_chunk
Run Code Online (Sandbox Code Playgroud)
这就是结果:
[Tree('GPE', [('Michael', 'NNP')]), Tree('PERSON', [('John', 'NNP')]), Tree('GPE', [('Jakarta', 'NNP')])]
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否有可能不包括pos_tag(如上面的NNP)并且仅包括Tree'GPE','PERSON'?什么'GPE'的意思?
提前致谢
命名实体分块器将为您提供一棵包含块和标签的树。你无法改变这一点,但你可以去掉标签。从你的开始tagged_sent:
chunks = nltk.ne_chunk(tagged_sent)
simple = []
for elt in chunks:
if isinstance(elt, Tree):
simple.append(Tree(elt.label(), [ word for word, tag in elt ]))
else:
simple.append( elt[0] )
Run Code Online (Sandbox Code Playgroud)
如果您只想要块,请省略else:上面的子句。您可以调整代码以按照您想要的方式包装块。我使用 nltkTree将更改保持在最低限度。请注意,某些块由多个单词组成(尝试在示例中添加“New York”),因此块的内容必须是列表,而不是单个元素。
附言。“GPE”代表“地缘政治实体”(显然是一个词块错误)。您可以在此处查看 nltk 书中的“常用标签”列表。
| 归档时间: |
|
| 查看次数: |
1847 次 |
| 最近记录: |