#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_
каждой сущности.