使用spaCy为DataFrame创建NER标签列出现AttributeError如何解决
spaCy实体标签列生成错误解决方法
错误原因
label_是spaCy实体Span对象的专属属性,ner_model(x)返回的是Doc类对象,本身不携带label_属性。你生成实体列时通过.ents拿到了Doc下的所有实体Span列表,生成标签列时也需要先提取ents再遍历取属性。
正确实现代码
1. 与实体列一一对应的实体标签列表(和现有逻辑对齐,推荐使用)
# 注意保持和实体列相同的模型调用,不要混用ner_model和nlp避免结果不一致 df['new_col1'] = df['Combined'].apply(lambda x: [ent.label_ for ent in ner_model(x).ents])
2. 逐token的全序列标签(适用于序列标注场景,非实体token标记为'O')
df['token_labels'] = df['Combined'].apply(lambda x: [f"{token.ent_iob_}-{token.ent_type_}" if token.ent_type_ else "O" for token in ner_model(x)])
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

