質問編集履歴

1

コンプラ抵触のため削除

2020/05/21 11:35

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- トークン化TransformersのBertJapaneseTokenizerを使っ文章分類モデルが出力できない
1
+ 諸事情より削除しまし
test CHANGED
@@ -1,43 +1 @@
1
- ### 前提・実現したいこと
2
-
3
-
4
-
5
- scikit-learnのpipelineを使ってBERT→StandardScaler→GradientBoostClassifier→SVCの順にデータをフィットさせてモデルを作りました。
6
-
7
-
8
-
9
- テストデータを使っpredict値と実際の正解を並べpandas.dataflameはto_pickleメソッドで問題なく出力でき、良い評価値も確認できているのでモデル自体はうく作れているように思えす。
1
+ 削除しまし削除しまし削除しした削除しした削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました削除しました
10
-
11
-
12
-
13
- ところがそのモデルを
14
-
15
- with open(fname, 'wb') as f:
16
-
17
- cloudpickle.dump(model, f)
18
-
19
- で出力しようとすると。
20
-
21
- TypeError: can't pickle Tagger objects
22
-
23
- というエラーが出てしまいます。
24
-
25
-
26
-
27
- Tagger ObjectはMecabによって生成されるので、おそらくBERTモデルにデータを読ませるためのトーカナイザに起因していると思うのですが、自分はいまtransformersライブラリのbert-base-japanese(日本語事前学習済のBERTモデル引用とMecabによる形態素解析が簡単に行えるライブラリ)から得たトーカナイザを使っているので、中身を変更することはできません。
28
-
29
-
30
-
31
- このような場合、どうしたらこのエラーを抜け出せますか?
32
-
33
- ご回答、よろしくお願いいたします。
34
-
35
-
36
-
37
- ### 補足
38
-
39
-
40
-
41
- - ちなみにシリアライザはcloudpickle以外にもpickle、dill、joblibを使ってみて同様のエラーがでました。
42
-
43
- - 他のトーカナイザ+日本語事前学習モデルに変更するという手もありますが、なるべく今のtransformersを使った形でモデルを出力したいと思っています。