この記事の内容
watsonx.ai でリリースされた IBM 製基盤モデルである Slate と Watson NLU で sentiment classification タスクにおける性能比較と考察を行いました。
Slate について
Slate は IBM が提供を発表している基盤モデルの中で encoder アーキテクチャーのモデルで、ラベル付きデータセットを用いて以下のような NLP タスクに対応させることができます。
・Entity extraction
・Text classification
・Sentiment classification(document, sentence, target)
当記事では sentiment classification(sentence)タスクを対象としています。
Slate の学習と推論の実行方法
前回の記事を参考にしました。
Watson NLU の学習と推論の実行方法
公式ドキュメントを参考にしました。
ちなみに Watson NLU の custom sentiment model は 2023/6/3 に廃止されているため、今回は custom classification model を使用しました。
データセットの準備
WRIMEという日本語の感情分析のためのデータセットを使用しました。
短い日本語文とそれに対して5種類の感情極性(-2:強いネガティブ, -1:ネガティブ, 0:ニュートラル, 1:ポジティブ, 2:強いポジティブ)のうちいずれかがラベル付けされています。
今回は -2:強いネガティブ, 0:ニュートラル, 2:強いポジティブ の値がラベル付けされているサンプルのみを使用し、negative, neutral, positive の3クラス分類で検証を行いました。
また、データセットは Train, Dev, Test 用に分けられています。
明日から学校開始。また早起きしないと。,neutral
天気もいいし、花粉のシーズンも終わったようだし、布団が干せて嬉しいなあ。,positive
あらら、163人のうち79人が発症は厳しいね。6日から5日間の営業停止処分て、その間の寮生の過ごし方、食事のお世話はどうなるのだろうかな?,negative
...
評価方法
・Slate, NLU それぞれで Train 用データセットを使用してモデルを学習し、Test 用データセットに対する分類結果を求めます。(今回 Dev 用データセットは使用しません。)
・sklearn の roc_auc_score メソッドを使用して ROC curve の AUC score を one vs rest, one vs one それぞれで(macro 平均で)求めて結果を比較します。
・また、今回は多クラス分類問題のため、top-1 の結果のみを採用した際の性能を観察するために、予測結果の confidence に対する閾値を変動させ、変化する accuracy ごとの棄却されなかったサンプル(有効なサンプル)の割合も可視化して比較します。
結果
AUC score
以下の表のような結果となりました。
・one vs rest の AUC score では NLU の方が僅かに高いスコアとなりました。
・一方で one vs one の AUC score では Slate の方が高いスコアとなりました。
model | AUC score(ovr) | AUC score(ovo) |
---|---|---|
Slate | 0.838 | 0.845 |
NLU | 0.840 | 0.839 |
accuracy ごとの有効なサンプルの割合
accuracy(micro平均)ごとの有効なサンプルの割合
accuracy(macro平均)ごとの有効なサンプルの割合
accuracy ごとの有効なサンプルの割合を可視化しました。
グラフが右上にあるほど性能が高いことを表しています。
・micro 平均の accuracy では概ね slate の方が良い性能となっています。
・macro 平均の accuracy では slate の方がはるかに高い性能となっています。
まとめと考察
・以上の結果から、sentiment classification タスクにおいては概ね slate の方が高い性能を得られることがわかりました。
・データ全体の平均から求めた性能(class imbalance の影響有)である AUC score(ovr)や accuracy(micro 平均)については slate, NLU で大きな性能差はありませんでした。
・一方でクラスごとの平均から求めた性能である AUC score(ovo)や accuracy(macro 平均)では slate の方が NLU の性能を大きく上回っていました。
・今回の3クラス分類問題でサンプルの半数以上は neutral が正解ラベルとなっており NLU は slate よりもその偏りの影響を大きく受けていたと考えられます。
・今回のような sentiment classification タスクにおいては NLU よりもまずは Slate を試してみるのが良さそうです。
参考