如何 link spacy 命名实体到嵌套字典中的文本?
How to link the spacy named entities to the the text from a nested dictionary?
我有一个包含文本的词典列表:
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_])
我有一个包含文本的词典列表:
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_])