2017-10-27 16 views
0

私は最初のPythonプロジェクトに取り組んでおり、かなり大きなデータセット(数千の行のうちの10個)を持っています。私は、5つのテキスト列(1つのセルにつきテキストの複数の文章)でいくつかのnlp(クラスタリング、分類)を行う必要があり、データセットの整理/構築にパンダを使用していました。私はすべてのnlpのためにspaCyを使用したいと思っていますが、私の列のテキストをどのようにトークン化するかを理解できません。私はspaCyのドキュメンテーションを読んだことがあります。しかし、私が見つけたすべての例は、単一の文章または単語のためのものです。パンダのdfでは75K行ではありません。PandasとspaCyを使用してトークン化

私はのようなものを試してみた: df['new_col'] = [token for token in (df['col'])]

間違いなくいくつかの助け/リソースをいただければ幸いです。

full (albeit messy) code available here

+0

あなたが持っている特定の問題は何ですか?エラーが発生していますか? – Peter

+0

@Peterエラーは発生しませんが、テキストはトークン化されていないようです(つまり、字句解析のような処理を行うと、基本的にテキストがまだ文字列形式でトークンではないというエラーが表示されます)。 – LMGagne

答えて

3

私は使ったことがないスペイシー(NLTKはいつも私のために仕事を得ている)が、これは動作するはずのようなドキュメントを一瞥からそれが見えます:

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

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

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