如何使用 spaCy 从只有 1 个命名实体的文本中提取句子?
How to extract sentences from one text with only 1 named entity using spaCy?
我有一个句子列表,我希望能够使用 spaCy 仅附加带有 1 个“PERSON”命名实体 的句子。我使用的代码如下:
test_list = []
for item in sentences: #for each sentence in 'sentences' list
for ent in item.ents: #for each entity in the sentence's entities
if len(ent in item.ents) == 1: #if there is only one entity
if ent.label_ == "PERSON": #and if the entity is a "PERSON"
test_list.append(item) #put the sentence into 'test_list'
但后来我得到:
TypeError: object of type 'bool' has no len()
我做错了吗?我将如何完成这项任务?
你得到错误是因为 ent in item.ents
returns 一个布尔结果,你无法得到它的长度。
你要的是
test_list = []
for item in sentences: #for each sentence in 'sentences' list
if len(item.ents) == 1 and item.ents[0].label_ == "PERSON": #if there is only one entity and if the entity is a "PERSON"
test_list.append(item) #put the sentence into 'test_list'
len(item.ents) == 1
检查句子中是否只检测到一个实体,item.ents[0].label_ == "PERSON"
确保第一个实体标签文本是 PERSON
.
注意 and
运算符,两个条件都必须满足。
我有一个句子列表,我希望能够使用 spaCy 仅附加带有 1 个“PERSON”命名实体 的句子。我使用的代码如下:
test_list = []
for item in sentences: #for each sentence in 'sentences' list
for ent in item.ents: #for each entity in the sentence's entities
if len(ent in item.ents) == 1: #if there is only one entity
if ent.label_ == "PERSON": #and if the entity is a "PERSON"
test_list.append(item) #put the sentence into 'test_list'
但后来我得到:
TypeError: object of type 'bool' has no len()
我做错了吗?我将如何完成这项任务?
你得到错误是因为 ent in item.ents
returns 一个布尔结果,你无法得到它的长度。
你要的是
test_list = []
for item in sentences: #for each sentence in 'sentences' list
if len(item.ents) == 1 and item.ents[0].label_ == "PERSON": #if there is only one entity and if the entity is a "PERSON"
test_list.append(item) #put the sentence into 'test_list'
len(item.ents) == 1
检查句子中是否只检测到一个实体,item.ents[0].label_ == "PERSON"
确保第一个实体标签文本是 PERSON
.
注意 and
运算符,两个条件都必须满足。