используйте tree2conlltags из nltk.chunk. Также ne_chunk нуждается в тегах pos, которые маркируют токены слов (следовательно, требуется word_tokenize).
from nltk import word_tokenize, pos_tag, ne_chunk
from nltk.chunk import tree2conlltags
sentence = "Mark and John are working at Google."
print(tree2conlltags(ne_chunk(pos_tag(word_tokenize(sentence))
"""[('Mark', 'NNP', 'B-PERSON'),
('and', 'CC', 'O'), ('John', 'NNP', 'B-PERSON'),
('are', 'VBP', 'O'), ('working', 'VBG', 'O'),
('at', 'IN', 'O'), ('Google', 'NNP', 'B-ORGANIZATION'),
('.', '.', 'O')] """
Это даст вам список кортежей: [(token, pos_tag, name_entity_tag)] Если этот список не совсем то, что вам нужно, конечно, легче проанализировать нужный список из этого списка, чем дерево nltk.
Код и сведения из этой ссылки; проверьте это для получения дополнительной информации
Вы также можете продолжить, только извлекая слова, с помощью следующей функции:
def wordextractor(tuple1):
#bring the tuple back to lists to work with it
words, tags, pos = zip(*tuple1)
words = list(words)
pos = list(pos)
c = list()
i=0
while i<= len(tuple1)-1:
#get words with have pos B-PERSON or I-PERSON
if pos[i] == 'B-PERSON':
c = c+[words[i]]
elif pos[i] == 'I-PERSON':
c = c+[words[i]]
i=i+1
return c
print(wordextractor(tree2conlltags(nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize(sentence))))
Edit Добавлена строка вывода ** Edit * Добавлен вывод только для B-Person
person
elwhite
schedule
12.02.2018
ne_chunk()
? В чем именно вы застряли? - person lenz   schedule 05.08.2015nltk.ne_chunk(nltk.pos_tag(nltk.word_tokenize("Welcome to Barbados, Tobdy!")))
- person Alex Riina   schedule 28.04.2019