Я предлагаю вам попытаться пропустить первый блок вашего кода и проверить оставшийся поток выполнения.
# tokens,pos,ner = make_tag_lists(sample)
tokens = ['Hi','FOO','BAR',"it's",'ME']
ner =['MISC','PERSON','PERSON','MISC','PERSON']
def extract_entities(tokenlist,taglist,tagtype):
entities={}
inentity=False
for i,(token,tag) in enumerate(zip(tokenlist,taglist)):
if tag==tagtype:
if inentity:
entity+=" "+token
else:
entity=token
inentity=True
elif inentity:
entities[entity]=entities.get(entity,0)+1
inentity=False
return entities
people=extract_entities(tokens,ner,"PERSON")
top_people=sorted(people.items(),key=operator.itemgetter(1),reverse=True)[:20]
print(top_people)
Результат этого примера [('FOO BAR', 1)]
.
Кроме того, обратите внимание, что вам не хватает последней сущности PERSON, поскольку она не добавлена в словарь entities
.