如何使用 SpaCy 从 Pandas DataFrame 中提取命名实体

问题描述

我正在尝试使用 this 问题的第一个答案提取命名实体,代码如下

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

但它不是打印实体。我试过 print(i)print(doc) 两个变量都有值,df['Article'] 包含新闻文本。有人可以帮助解释为什么第二个循环没有提取实体吗?谢谢

编辑:
这是 dataset 文件,请运行以下代码以形成我已完成的预处理。

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

df['Articles']删除特殊字符

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

解决方法

使用 df['Article'].map(lambda x: re.sub(r'\W+','',x)),您可以删除文章中的所有空白字符。

你需要使用

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

使用该正则表达式,您将只删除空格以外的特殊字符。