Как добавить именованные объекты, извлеченные из фрейма данных?

#python #pandas #for-loop #spacy #named-entity-recognition

#python #панды #для цикла #spacy #распознавание именованных объектов

Вопрос:

следующий код для извлечения и последующей печати объектов df['Article'] работает просто отлично.

 for i in df['Article'].to_list():
    doc = nlp(i)
    for entity in doc.ents:
        print((entity.text))
 

Но всякий раз, когда я пытаюсь append использовать эти объекты entities_list.append((entity.text)) , я получаю TypeError: object of type 'float' has no len() ошибку, которую я пытался создать entities_list=[] , используя следующий способ

 entities_list = []
for i in df['Article'].to_list():
    doc = nlp(i)
    for entity in doc.ents:
        print((entity.text))
 

А также

 for i in df['Article'].to_list():
    entities_list = []
    doc = nlp(i)
    for entity in doc.ents:
        print((entity.text))
 

Также, даже если я попытаюсь создать другой фрейм данных или добавить новый столбец df , я получаю ту же ошибку. Может кто-нибудь помочь с тем, что я здесь делаю не так? Спасибо

РЕДАКТИРОВАТЬ:
данные в df['Articles'] тексте новостей, например

Шаг Пенса связан с тем, что по всему миру разворачиваются усилия по вакцинации в борьбе за прекращение пандемии, которая унесла по меньшей мере 1,66 миллиона жизней и заразила более 74 миллионов человек.

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

 [entity1, entity2, entity3, entity4]
 

Комментарии:

1. Где entities_list в вашем примере кода? Пожалуйста, добавьте небольшой, но значимый образец ввода и ожидаемый результат, чтобы лучше понять проблему, с которой вы столкнулись.

2. @Dani Mesejo Я добавил больше информации к вопросу, пожалуйста, посмотрите.

3. У вас есть пропущенные значения (NAN) в столбце df[‘Articles’]? Попробуйте сделать что-то вроде for i in df['Article'].fillna('').to_list()

4. Спасибо @Dani Mesejo, это устранило ошибку, пожалуйста, добавьте ее в ответ, чтобы я мог пометить ее как ответ

Ответ №1:

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

 entities_list = []
for i in df['Article'].fillna('').to_list():
    doc = nlp(i)
    for entity in doc.ents:
        entities_list.append((entity.text))