分類器を作る
1. データを精査する
カテゴリ数や文字数についての統計をとる
どのカテゴリを使うかを決める そのまま使うとヤバいカテゴリとかの問題を見つけ、除くか決める
2. 訓練用・テスト用データを作る
使うと決めたカテゴリをラベルとし、本文("text")とカテゴリ("label")のベアを抜いてきてcsvファイルにする
文章中からURLを抜いたり表記揺れを直したりする前処理を適宜行う
3. モデルを訓練する
使うモデル(AutoModelとかAutoModelForSequenceClassificationとか)、トークナイザ、データの準備、訓練のコンフィグとかを決めたらTrainerに投げる
jsonl形式のファイル
jsonl形式とは、jsonオブジェクトが改行区切りでたくさん並んでいるファイル形式。
ふつうのjsonファイルであれば、
with open("hoge.json", "r") as f: L = json.load(f)
みたいにできると思う。json.load()は、ファイルオブジェクト型を引数にとる。
しかし、jsonl形式のファイルを上のようにjson.load()しようとすると、多分Extra data: line 2 column 1みたいなエラーが出るはず。
なので、それを防止するための方法が2通りある。
一つは、jsonl形式のファイルを一行ずつ読み取り、それをjson.loads()という、文字列を引数にとってjson形式だと解釈するみたいな関数を使う。(loadsの"s"はstringのs)
with open("hoge.json", "r") as f: temp = f.readline() # 1行読み込み fuga = json.loads(temp) # fugaに1つのjsonオブジェクトが代入される
もう一つは、JSONDecoder()クラスのクラスメソッドであるJSONDecoder.raw_decode()を使う方法がある。
decoder = json.JSONDecoder() with open("hoge.json", "r") as f: temp = f.readline() # 1行読みこみ fuga = decoder.raw_decode(temp) # タプルで帰るので、fuga[0]が所望のjsonオブジェクト