2
ベクトラscikit-学ぶ私は、それがOKスタンドアロンで動作しますscikit-学ぶ彼らのexampleに基づくためスペイシーを使用してトークナイザ補題を書きました以下の通りです:スペイシーと
:私は、その後、GridSearchCV
実行をトークナイザのコンストラクタのスペイシー外をロードする際
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC
from sklearn.multiclass import OneVsRestClassifier
from sklearn.pipeline import Pipeline
from sklearn.grid_search import GridSearchCV
wordvect = TfidfVectorizer(analyzer='word', strip_accents='ascii', tokenizer=LemmaTokenizer())
classifier = OneVsRestClassifier(SVC(kernel='linear'))
pipeline = Pipeline([('vect', wordvect), ('classifier', classifier)])
parameters = {'vect__min_df': [1, 2], 'vect__max_df': [0.7, 0.8], 'classifier__estimator__C': [0.1, 1, 10]}
gs_clf = GridSearchCV(pipeline, parameters, n_jobs=7, verbose=1)
from sklearn.datasets import fetch_20newsgroups
categories = ['comp.graphics', 'rec.sport.baseball']
newsgroups = fetch_20newsgroups(remove=('headers', 'footers', 'quotes'), shuffle=True, categories=categories)
X = newsgroups.data
y = newsgroups.target
gs_clf = gs_clf.fit(X, y)
### AttributeError: 'spacy.tokenizer.Tokenizer' object has no attribute '_prefix_re'
エラーが表示されません。
- が
spacy.load('en')
安全へのspacynlpオブジェクトです:しかし、これは
GridSearchCV
から私のn_jobs
のすべてのは、アクセスして同じspacynlpオブジェクトを呼び出しますことを意味し、質問を残しており、これらのジョブの間で共有されますGridSearchCVの複数のジョブで使用されますか? - これは、scikit-learnのトークナイザ内でspacyへの呼び出しを実装する正しい方法ですか?
これは良い点ですが、これは代わりにやるべきことかもしれません。しかし、私は最終的には、ハイパーパラメータグリッド検索の一部としてPOSCなどのさまざまなオプションでspaCyトークンを使用したいと思っています。 – tkja
これも可能です。あなたのデータを '' {{"token": "cats"、 "lemma": "cat"}、{...}} 'のようなdictsのリストとして保存します。これは基本的にSpacyの文章をJSONに変換したものです。これを入力とし、トークンまたは補題のいずれかを出力するパラメータを持つパイプラインステップを作成します。トークン化はグリッド検索の一部です。 – mbatchkarov