Ошибка атрибута при создании столбца меток NER

#nlp #spacy #named-entity-recognition

Вопрос:

Я пытаюсь создать столбцы во фрейме данных, которые отображают сущности и метки из модели пространства, пока что, введя следующий код, я могу создать столбец сущностей:

 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_»

Я подозреваю, что мне, возможно, придется перебирать отдельные токены, но я не уверен, как это сделать?

Ответ №1:

Тебе нужно сделать что-то вроде этого

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

Вывод nlp(x) -это Doc объект, и label на объекте нет атрибута Doc (как явно указано в ошибке, которую вы получаете). Вам нужны метки сущностей на Doc объекте, поэтому вам нужно выполнить итерацию nlp(x).ents и получить метки label_ каждой сущности.