[解決済み] AttributeError: low not found; scikit-learnのCountVectorizerでPipelineを使用する。
質問
このようなコーパスを持っています。
X_train = [ ['this is an dummy example']
['in reality this line is very long']
...
['here is a last text in the training set']
]
といくつかのラベルがあります。
y_train = [1, 5, ... , 3]
以下のようにPipelineとGridSearchを使いたいと思います。
pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('reg', SGDRegressor())
])
parameters = {
'vect__max_df': (0.5, 0.75, 1.0),
'tfidf__use_idf': (True, False),
'reg__alpha': (0.00001, 0.000001),
}
grid_search = GridSearchCV(pipeline, parameters, n_jobs=1, verbose=1)
grid_search.fit(X_train, y_train)
これを実行すると、次のようなエラーが表示されます。
AttributeError: lower not found
.
検索してみると、このエラーについての質問がありました こちら というのも、私は入力データとしてリストのリストを使用しており、各リストは1つの切れ目のない文字列を含んでいたからです。
私はこの理論を検証するために、簡単で汚いトークナイザーを作りました。
def my_tokenizer(X):
newlist = []
for alist in X:
newlist.append(alist[0].split(' '))
return newlist
の引数で使用すると、その通りになります。
CountVectorizer
:
pipeline = Pipeline([
('vect', CountVectorizer(tokenizer=my_tokenizer)),
...何事もなかったかのように、やはり同じエラーが出ます。
をコメントアウトすることで、このエラーを回避できることに気づきました。
CountVectorizer
をパイプラインに追加しました。これは不思議なことです。
TfidfTransformer()
変換するデータ構造(この場合はカウントの行列)がないと。
なぜこのようなエラーが出るのでしょうか?実は、このエラーの意味がわかるといいのですが! (これは
lower
は、テキストを小文字に変換するために呼び出されたのでしょうか?スタックトレースを読んでもわからない)。私はPipelineの使い方を間違えているのでしょうか...それとも、本当に問題は
CountVectorizer
を単独で使用することはできますか?
何かアドバイスがあれば、ぜひお願いします。
解決方法は?
データセットのフォーマットが間違っているためです。 str、unicode、fileのいずれかのオブジェクトを生成するイテラブルです。 をCountVectorizerのfit関数に入れる(あるいはパイプラインに入れる、は関係ない)。テキストを含む他のイテラブルに対するイテラブルではない(あなたのコードにあるように)。あなたの場合、Listは反復可能であり、メンバーが文字列であるフラットリストを渡すべきです(他のリストではありません)。
つまり、あなたのデータセットは次のようなものです。
X_train = ['this is an dummy example',
'in reality this line is very long',
...
'here is a last text in the training set'
]
この例を見てください、とても便利です。 テキスト特徴抽出と評価のためのサンプルパイプライン
関連
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Python関数の高度な応用を解説
-
PicgoのイメージベッドツールをPythonで実装する
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】Flaskのテンプレートが見つからない【重複あり
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない
-
[解決済み】pip install mysql-python は EnvironmentError: mysql_config not found で失敗します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python百行で韓服サークルの画像クロールを実現する
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】Flaskのテンプレートが見つからない【重複あり