如何将命名为spacy的实体链接到嵌套字典中的文本



我有一个包含文本的字典列表:

list_dicts = [{'id': 1, 'text': 'hello my name is Carla'}, {'id': 2, 'text': 'hello my name is John' }]

我在嵌套文本上应用了Spacy命名实体识别,比如:

for d in list_dicts: 
for k,v in d.items():
if k=='text':
doc = nlp(v) 
for ent in doc.ents:
print([ent.text, ent.label_]) 

输出是命名实体文本及其相应标签的打印输出,例如:

['Bob', 'PERSON']
['John', 'PERSON']

我想将命名实体添加到每个嵌套字典中相应的文本中,如下所示:

list_dicts = [{'id': 1, 'text': 'hello our names are Carla and Bob', 'entities':[['Carla', 'PERSON'], ['Bob':'PERSON']]}, {'id': 2, 'text': 'hello my name is John', 'entities': [['John', 'PERSON']] }]

就目前而言,我试图实现zip((作为一种将实体链接到原始文本的方法,并在稍后将其转换为一个新的字典列表,但zip((似乎不适用于Spacy对象。

使用dict.setdefault

例如:

for d in list_dicts: 
doc = nlp(d['text'])
for ent in doc.ents:
d.setdefault('entities', []).append([ent.text, ent.label_])