创建一列 NER 标签的属性错误

Attribute error creating a column of NER labels

我正在尝试在数据框中创建显示来自 spaCy 模型的实体和标签的列,到目前为止,通过输入以下代码我可以生成一列实体:

df['new_col'] = df['Combined'].apply(lambda x: list(ner_model(x).ents))

但是,如果我对标签尝试相同的方法:

#df['new_col1'] = df['Combined'].apply(lambda x: list(nlp(x).label_))

我收到“AttributeError:'spacy.tokens.doc.Doc' 对象没有属性 'label_'”

我怀疑我可能必须迭代单个标记,但我不确定该怎么做?

你需要做这样的事情

df['new_col1'] = df['Combined'].apply(lambda x: [ent.label_ for ent in nlp(x).ents])

nlp(x) 的输出是一个 Doc 对象,Doc 对象上没有 label 属性(如您收到的错误中明确指出的那样) .您需要 Doc 对象上实体的标签,这就是为什么您需要遍历 nlp(x).ents 并获取每个实体的 label_