gpt4 book ai didi

python - Python 中 NLTK 的命名实体识别。识别网元

转载 作者:IT老高 更新时间:2023-10-28 20:47:40 25 4
gpt4 key购买 nike

我需要将单词分类为词性。比如动词、名词、副词等等。我用了

nltk.word_tokenize() #to identify word in a sentence 
nltk.pos_tag() #to identify the parts of speech
nltk.ne_chunk() #to identify Named entities.

输出是一棵树。 比如

>>> sentence = "I am Jhon from America"
>>> sent1 = nltk.word_tokenize(sentence )
>>> sent2 = nltk.pos_tag(sent1)
>>> sent3 = nltk.ne_chunk(sent2, binary=True)
>>> sent3
Tree('S', [('I', 'PRP'), ('am', 'VBP'), Tree('NE', [('Jhon', 'NNP')]), ('from', 'IN'), Tree('NE', [('America', 'NNP')])])

当访问这棵树中的元素时,我是这样做的:

>>> sent3[0]
('I', 'PRP')
>>> sent3[0][0]
'I'
>>> sent3[0][1]
'PRP'

但是在访问命名实体时:

>>> sent3[2]
Tree('NE', [('Jhon', 'NNP')])
>>> sent3[2][0]
('Jhon', 'NNP')
>>> sent3[2][1]
Traceback (most recent call last):
File "<pyshell#121>", line 1, in <module>
sent3[2][1]
File "C:\Python26\lib\site-packages\nltk\tree.py", line 139, in __getitem__
return list.__getitem__(self, index)
IndexError: list index out of range

我收到了上述错误。

我想要的是将输出作为类似于之前的“PRP”的“NE”,所以我无法识别哪个单词是命名实体。有没有办法在 python 中使用 NLTK 来做到这一点?如果是这样,请发布命令。还是树库中有一个函数可以做到这一点?我需要节点值'NE'

最佳答案

这个答案可能不正确,在这种情况下我会删除它,因为我没有在这里安装 NLTK 来尝试它,但我认为你可以这样做:

   >>> sent3[2].node
'NE'

sent3[2][0] 返回树的第一个子节点,而不是节点本身

编辑:我回家后尝试了这个,它确实有效。

关于python - Python 中 NLTK 的命名实体识别。识别网元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5708352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com