研究室の新人研修のコンペの記録
コンペに利用したデータは念のため削除しています
- タスク
- 日本語のTwitterテキストについての感情極性分類
- 書き手の感情極性を5クラス分類(-2, -1, 0, 1, 2)
- 評価指標は Quadratic Weighted Kappa
- データセット
- 訓練用が3万件、検証用が1,250件、評価用が1,250件、提出用が2,500件
- Train/Dev/Testの分割変更は禁止
- リーダーボードのスコアで評価
最終提出で利用した実行ファイル
- StepEstimator_v.0.0.1_3class_LogisticR.ipynb
- StepEstimator_v.0.0.1_negative_LightGBM.ipynb
- StepEstimator_v.0.0.1_positive_LightGBM.ipynb
stopword辞書の変更で少しスコアが下がっていますが、この実行ファイルでも同じようなスコアがでます。
StepEstimator
が一番スコアが出たので簡単に概要を書いておきます。
StepEstimatorというのは勝手に命名したモデルを複数使って推論する方法のことです。 以下の図のような構造をしています。
3クラス分類器でpositive、neutral、negativeの3クラスに分類した後、positiveとnegativeはそれぞれ2クラス分類したあと結果を出力します。
3クラス分類にLogisticRegression、2クラス分類にLightGBMを使ったときにBestスコアが出ました。その時devデータについての結果は以下の2枚のようになりました。
v.0.0.1_selfattention.ipynbを実装しました。 参考にしたページ:PyTorchでSelf Attentionによる文章分類を実装してみた
Transformersライブラリ(hugging face)を用いて学習済みモデルを5クラス分類にファインチューニングしました。
事前学習モデルはcl-tohoku/bert-base-japanese-whole-word-masking
です。
early stoppingを実装したコードで5epochの学習した結果、testデータのQuadratic Weighted Kappaの値が0.501でした。