我正在尝试使用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-gram。如果我只检查spacy对象的一小块内容,则如下所示:
for item in doc:
print(item.text)
iPad
has
a
78
%
Steve
Milunovich
share
of
the
U.S.
commercial
tablet
market
因此,Spacy对象已经被标记化。因此,我无法使用上面的代码删除命名实体。有没有办法从对象中删除所有命名实体?