Я пытаюсь удалить именованные объекты из документа с помощью Spacy. Я не нашел никаких проблем с распознаванием названных лиц. использовал этот код:
ne = [(ent.text, ent.label_) for ent in doc.ents]
print(ne)
persons = [ent.text for ent in doc.ents if ent.label_ == 'PERSON']
print(persons)
Вывод:
'Timothy D. Cook',
'Peter',
'Peter',
'Benjamin A. Reitzes',
'Timothy D. Cook',
'Steve Milunovich',
'Steven Mark Milunovich',
'Peter',
'Luca Maestri'
Но затем я пытаюсь использовать этот блок для фактического удаления их из документа:
text_no_namedentities = []
ents = [e.text for e in doc.ents]
for item in doc:
if item.text in ents:
pass
else:
text_no_namedentities.append(item.text)
print(" ".join(text_no_namedentities))
Это не работает, так как NE это n-грамм. И если я просто проверяю содержимое небольшого фрагмента просторного объекта, это выглядит следующим образом:
for item in doc:
print(item.text)
iPad
has
a
78
%
Steve
Milunovich
share
of
the
U.S.
commercial
tablet
market
Таким образом, просторный объект маркируется. Следовательно, я не могу удалить сетевые элементы с моим кодом выше. Любые идеи о том, как я могу удалить все названные объекты из объекта?