web-dev-qa-db-ja.com

PandasおよびspaCyを使用したトークン化

私は最初のPython=プロジェクトに取り組んでおり、かなり大きなデータセット(数万行)を持っています。5つのテキスト列(複数の文の複数の文)でいくつかのnlp(クラスタリング、分類)を実行する必要があります。 'cell'あたりのテキスト)、pandas=を使用してデータセットを整理/構築しています。すべてのnlpにspaCyを使用することを望んでいますが、テキストをトークン化する方法がわかりませんspaCyのドキュメントをたくさん読んでググったところ、見つけた例はすべて1つの文またはWordのもので、pandas dfの75K行ではありません。

私は次のようなことを試しました:df['new_col'] = [token for token in (df['col'])]

しかし、間違いなくいくつかのヘルプ/リソースをいただければ幸いです。

ここで利用可能な(厄介な)完全なコード

7
LMGagne

SpaCyを使用したことはありませんが(nltkは常に私に任せてくれました)、ドキュメントを一目見たところ、次のように機能するはずです。

_import spacy
nlp = spacy.load('en')

df['new_col'] = df['text'].apply(lambda x: nlp(x))
_

nlpは、デフォルトでSpaCyパイプライン全体を実行することに注意してください。これには、品詞のタグ付け、解析、および名前付きエンティティの認識が含まれます。 nlp.tokenizer(x)の代わりにnlp(x)を使用するか、モデルをロードするときにパイプラインの一部を無効にすることにより、コードを大幅にスピードアップできます。例えば。 nlp = spacy.load('en', parser=False, entity=False)

18
Peter