SpaCyを使用してPandasDataFrameから名前付きエンティティを抽出する方法

Dec 19 2020

この質問への最初の回答を使用して名前付きエンティティを抽出しようとしています。コードは次のとおりです。

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

しかし、それは印刷エンティティではありません。試しましたがprint(i)print(doc)両方の変数に値がありdf['Article']、ニューステキストが含まれています。2番目のループがエンティティを抽出しない理由を誰かが助けることができますか?ありがとうございました

編集:
これはデータセットファイルです。次のコードを実行して、私が行った前処理を形成してください。

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))

回答

1 WiktorStribiżew Dec 19 2020 at 01:18

を使用するとdf['Article'].map(lambda x: re.sub(r'\W+', '', x))、記事からすべての空白文字を削除できます。

あなたは使用する必要があります

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

その正規表現では、空白以外の特別な文字のみを削除します。