Comment extraire des entités nommées de Pandas DataFrame à l'aide de SpaCy

Dec 19 2020

J'essaie d'extraire des entités nommées en utilisant la première réponse à cette question et le code est le suivant

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

Mais ce n'est pas l'impression d'entités. J'ai essayé print(i)et les print(doc)deux variables ont des valeurs et df['Article']contiennent du texte d'actualité. Quelqu'un peut-il expliquer pourquoi la deuxième boucle n'extrait pas d'entités? Je vous remercie

EDIT:
Ceci est un fichier de jeu de données , veuillez exécuter le code suivant pour former le prétraitement que j'ai effectué.

df.iloc[:,0].dropna(inplace=True)
df = df[df.iloc[:,0].notna()]

pour supprimer les caractères spéciaux de df['Articles']

df['Article'] = df['Article'].map(lambda x: re.sub(r'\W+', '', x))

Réponses

1 WiktorStribiżew Dec 19 2020 at 01:18

Avec df['Article'].map(lambda x: re.sub(r'\W+', '', x)), vous supprimez tous les caractères d'espacement de vos articles.

Vous devez utiliser

df['Article'] = df['Article'].str.replace(r'(?:_|[^\w\s])+', '')

Avec cette expression régulière, vous ne supprimerez que les caractères spéciaux autres que les espaces.