13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Watson NLCとNLUの精度を比べてみた

Last updated at Posted at 2021-09-12

はじめに

こちらの記事でも書いた通り、Natural Language Classifier(以降、NLC)が2022年8月でサービス終了し、機能がNatural Language Understanding(以降、NLU)に統合されます。となると俄然、NLCとNLUの精度の違いが気になりますよね。
今日はざっくりどのくらい精度が違うのか目安だけでも確認しておきたいと思います!

訓練データとテストデータ

訓練データに使ったのはライブドアニュースから取得したニュースタイトル。対象は5カテゴリで、1カテゴリにつき100件ずつ。合計500件です。ファイルフォーマットはNLCに合わせ、CSVとしました。
テストデータは同じく各ジャンル20件ずつ、合計100件を準備しました。
・スポーツ
・海外
・経済
・グルメ
・宇宙

表1.訓練データのカテゴリ別文字数

サービス スポーツ 海外 経済 グルメ 宇宙
平均 36 32.41 29.5 32.04 31.4
中央値 34 32 29 34 32
最頻値 33 36 23 16 33
標準偏差 6.76 6.32 7.99 10.91 4.28

正解の判定方法

NLC・NLUのどちらも、「confidence」値が一番大きい「class_name」がカテゴリと一致すれば正解 としています。

NLC:「confidence」値が一番大きい「class_name」はスポーツ

{
    "classifier_id": "605c7ax977-nlc-392",
    "url": "https://api.us-south.natural-language-classifier.watson.cloud.ibm.com/instances/xxxxxxxxxxxxx/v1/classifiers/xxxxxxxxxxxxx",
    "text": "西勇輝やっとやっと…8試合ぶり白星で通算100勝マツダの連敗4でストップ巨人と3差に拡大",
    "top_class": "スポーツ",
    "classes": [
        {
            "class_name": "スポーツ",
            "confidence": 0.9856064490253699
        },
        {
            "class_name": "グルメ",
            "confidence": 0.005623363905789924
        },
        {
            "class_name": "海外",
            "confidence": 0.003777655693367114
        },
        {
            "class_name": "経済",
            "confidence": 0.003079640591322321
        },
        {
            "class_name": "宇宙",
            "confidence": 0.0019128907841507862
        }
    ]
}

NLU:「confidence」値が一番大きい「class_name」はスポーツ

{
    "usage": {
        "text_units": 1,
        "text_characters": 44,
        "features": 1
    },
    "language": "ja",
    "classifications": [
        {
            "confidence": 0.900122,
            "class_name": "スポーツ"
        },
        {
            "confidence": 0.160062,
            "class_name": "経済"
        },
        {
            "confidence": 0.021802,
            "class_name": "海外"
        },
        {
            "confidence": 0.021197,
            "class_name": "宇宙"
        },
        {
            "confidence": 0.015938,
            "class_name": "グルメ"
        }
    ]
}

精度の比較

NLCとNLUの Confusion Matrixが下記の図です。NLCはグルメと宇宙が、NLUは海外がちょっと苦手のようですね。
image.png
正解率(Accuracy),適合率(Precision),再現率(Recall),F1値(F1-measure)を見ていきたいとおもいます。

表2.正解率(Accuracy),適合率(Precision),再現率(Recall),F1値(F1-measure)

サービス Accuracy Precision Recall F1
NLC 0.8800 0.8826 0.8800 0.8776
NLU 0.9300 0.9443 0.9300 0.9286

正解率(Accuracy)

正解率(Accuracy)はNLCが0.88、NLUが0.93とNLUの方が高いです。
カテゴリごとにみると、宇宙ではNLCが0.6500、NLUが1.0000と正解率の開きが見られます。

表3.カテゴリごとの正解率(Accuracy)

サービス スポーツ 海外 経済 グルメ 宇宙 平均
NLC 1.0000 0.9000 1.0000 0.8500 0.6500 0.8800
NLU 0.9500 1.0000 0.7000 1.0000 1.0000 0.9300

適合率(Precision)

適合率(Precision)の平均はNLCが0.8826、NLUが0.9443です。
カテゴリごとの適合率は表4に示しました。NLCはグルメが、NLUは海外が他に比べて低い値です。

表4.カテゴリごとの適合率(Precision)

サービス スポーツ 海外 経済 グルメ 宇宙 平均
NLC 0.9091 1.0000 0.9524 0.7391 0.8125 0.8826
NLU 1.0000 0.7692 1.0000 0.9524 1.0000 0.9443

再現率(Recall)

再現率(Recall)の平均はNLCが0.8800、NLUが0.9300です。こちらは正解率と同じになりますね。

表5.カテゴリごとの再現率(Recall)

サービス スポーツ 海外 経済 グルメ 宇宙 平均
NLC 1.0000 0.9000 1.0000 0.8500 0.6500 0.8800
NLU 0.9500 1.0000 0.7000 1.0000 1.0000 0.9300

F1値(F1-measure)

適合率(Precision)と再現率(Recall)のバランスを表すF1値です。
F1値(F1-measure)の平均はNLCが0.8776、NLUが0.9286になりました。

表6.カテゴリごとのF1値(F1-measure)

サービス スポーツ 海外 経済 グルメ 宇宙 平均
NLC 0.9524 0.9474 0.9756 0.7907 0.7222 0.8776
NLU 0.9756 0.9744 1.0000 0.8696 0.8235 0.9286

確信度「confidence」の違い

今回はconfidenceの値に関わらず、confidenceが最大のclass_nameを正解としました。
一方でconfidenceが一定値に達していない場合はふるまいを変える、といった実装をしているシステムもありますよね。

confidenceによって異なるアウトプットを出す例)

  • 0.6未満:ちょっとわからないな~。ごめんなさい。
  • 0.6以上0.9未満:もしかして、スポーツがお好きなんですか?
  • 0.9以上:スポーツ好きな人へのおススメはこちら!

表7がカテゴリごとのconfidenceの平均値です。全体的にNLCの方が高いですね。
特に海外、経済では0.3以上の開きがあります。

表7.カテゴリごとのconfidence平均値

サービス スポーツ 海外 経済 グルメ 宇宙 平均
NLC 0.9557 0.9303 0.9024 0.9585 0.9871 0.9468
NLU 0.8001 0.6119 0.5628 0.8049 0.8679 0.7295

NLCのconfidenceを使っているシステムの場合は、NLU移行時に値の見直しが必要になるかもしれませんね。

まとめ

ニュースタイトルの分類では、正解率(Accuracy),適合率(Precision),再現率(Recall),F1値(F1-measure)
のいずれの値も、NLUの方が良い結果に。
NLCからNLUへの移行に向けて、ほんのり安心材料ができました。
現場では扱うデータも重視する指標も異なりますよね。
また次回は、今回と違った傾向のデータを使って精度比較してみたいと思います。

参考サイト

fasttextとWatson Natural Language Classifierの文書分類比較
IBM Watson の NLC を NLU に移行する _ まだプログラマーですが何か?
機械学習で使う指標総まとめ(教師あり学習編) - プロクラシスト

変更履歴

2021.09.18 正解の判定方法と、confidenceのカテゴリ別比較を追加

13
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?