公開!週末研究ノート04 ー テキストクラス分類結果の可視化


はじめに ー 週末研究ノートとは?

個人的に研究的な活動をやるにあたり、オープンにしてみたら面白いかもと思い、自分が興味を持っている ざっくりテーマについて、これから、ゆるい週末研究を公開していこうと思います。(有識者の方のアドバイスも、ちょっとというかかなり期待してます!笑)

どこかの権威的な学会やジャーナルなどで発表する予定はないため、万が一、私の記事を利用する際には自己責任でお願いします。そんな人はいないと思いますが、念のため。

今回のサマリ (TL; DR)

  • PR 曲線で可視化
  • LIME を使った可視化
    • デフォルトでは、日本語には対応していないのでちょっと工夫する
    • 単語集合をハイライトする方法とオリジナル文書をハイライトする方法で可視化する

環境

  • Docker Desktop: 4.0.1(68347)
    • コンテナのメモリ: 12G
    • 自分の環境では、コンテナのメモリを 12GiB まで拡張した
  • Docker: version 20.10.8
  • docker-compose: version 1.29.2
  • Python: 3.8.10
  • GitHub リポジトリ

今回の週末研究ノート

今回は、前回正答率を評価したパイプラインを使って、可視化を試みます。
PR 曲線 を表示し、LIME による可視化を行い、簡易な解釈をつけました。


ldcc

PR Curves

  • Recall - Precision グラフ

AP(Average Precision) は、かなりよく、特にコメントはない感じ。

  • Threshold - Precision/Recall グラフ

livedoor-hommepeachydokujo-tsushin あたりは、必要に応じて境界値を調整しても良さそう。一方で、smax は、Precision と Recall が重なり過ぎている印象を受ける(実際、後の例で見るが、判定をチートしているとわかる。)


LIME による可視化


単語集合のハイライト

正判定のテキスト

movie-enter

まずは、movie-enter について。

movie-enter と判定した単語は、「映画」、「本作」、「劇場」などの単語であるが、どの単語もかなり影響度が小さいことがわかる。塵も積もれば山となるではないが、影響度がわずかなものが積み重なって予測結果に至ったと考えられる。

smax

次は、smax について。

smax は、「エスマックス」、「関連リンク」、「MAX」などのフッター情報をもとに判定していそうだとわかる、これは一般的には欲しい結果ではない(中身の内容で判定したいことが多いはずな)ので、フッターを除く前処理を入れて、再度学習し直す方が良いとわかります。

誤判定のテキスト

 正解: livedoor-homme / 予測: kaden-channel

予測では、誤答ラベル(kaden-channel)の0.77 に対し、正答ラベル(livedoor-homme)が 0.22 と、多少は正答ラベルの可能性も示唆している。「話題」という単語が kaden-channel である強い理由になっていそうであり、逆に livedoor-homme の強い否定の原因になっていそうとわかる。一つの仮説として考えられるのは、学習データの kaden-channel には、「話題」という単語が多く、判定の強い原因になっている、と考えられる点である。この仮説を確認するには、「話題」という単語を除くことであるが、根本的な解決とは言い難いため、「話題」という単語で判断しないように学習を誘導する手法を考えた方がより汎用的で運用上も辞書管理をしなくてよくなりそうである。

 正解:livedoor-homme / 予測:movie-enter


オリジナル文書へのハイライト

前半は概ね似た結果なので、ハイライトのみ確認します。

正判定のテキスト

movie-enter

smax

誤判定のテキスト

 正解: livedoor-homme / 予測: kaden-channel

 正解:livedoor-homme / 予測:movie-enter

ライブドアニュースコーパス(ldcc)に関する結果HTMLはこちら


aozora

青空文庫の分類に対しても同じように見ていきます。


PR Curves

  • Recall - Precision グラフ

  • Threshold - Precision/Recall グラフ

AP(Average Precision)が低めなのが、NDC 915NDC 914NDC 913 です。

ちなみに、NDC の分類は、以下のようになっています。

911 詩歌  (1,689件)
915 日記.書簡.紀行  (656件)
913 小説.物語  (6,329件)
K913: 子ども・小学生向けの本
914 評論.エッセイ.随筆  (4,366件)

NDC 915 の 日記、NDC 914 の評論、エッセイ、NDC 913 の小説、物語の区別が難しいということのようです。確かに、物によっては区別難しそうだなという感じもするので、違和感がない結果です。


LIME による可視化


単語集合のハイライト

正判定のテキスト

NDC K913

NDC K913 子供向けの本であるが、「い」、「お」、「の」、「しまい」などの「ひらがな」が判定原因になっているように見える。今回の前処理では、名詞、動詞などに絞っているので、これらの「ひらがな」が妥当かは原文から判断する必要がある。

NDC 915

NDC 915 は、日記、書簡、紀行などで、「し」、「雨」、「下り」、「午後」などが主な判定原因になっているように見える。

誤判定のテキスト

 正解: NDC K913 / 予測: NDC 911

正解ラベルは、NDC 913 小説、物語であるが、予測は NDC 911 詩歌 で、若干 NDC 914 評論、エッセイ、随筆 と判定している。
NDC 911 と誤判定した原因は、「海」、「改」、「ページ」、「船」などの単語であり、それぞれ個別に見ると、確かに詩歌にも出そうであると考えられ、誤判定につながってそうな感じがする。

 正解: NDC 915 / 予測: NDC 914

誤答ラベル NDC 914 評論、エッセイ、随筆 が 0.59 に対して、正解ラベル NDC 915 日記、書簡、紀行の 0.41 と、惜しい結果になっている。
単語を見ると、「私」が 0.24 と他の単語よりも大きいことから、「私」という単語に引っ張られて、NDC 914 評論、エッセイ、随筆 と判定していると考えられる。


オリジナル文書へのハイライト

前半は概ね似た結果なので、ハイライトのみ確認します。

正判定のテキスト

NDC K913

原文を見ると、一部ふりがなの箇所もハイライトされていることから、子供向けの本にふりがながふってあり、ひらがなの多さが特徴として利用されている可能性が見て取れます。ふりがなを除く前処理をした後、どう判定されるか見てみたいところです。

NDC 915

誤判定のテキスト

 正解: NDC K913 / 予測: NDC 911

なぜ、勇者や少佐などが、NDC 911 詩歌 と判定されているのは違和感がありますね。どの学習データ(文書)の影響を受けているかを調査したいところです。

 正解: NDC 915 / 予測: NDC 914

青空文庫(aozora)に関する結果HTMLはこちら

今回のパイプライン

LIME を日本語に対応させるために、パイプラインを以下のように工夫した。

実際の Notebookのコードは、こちら

まとめ

  • 可視化により、改善点やもう少し調査したい次のアクションが明確になる
  • LIME を使う時に、日本語に対応させるため、パイプラインを工夫する必要がある
  • レポーティングを想定し、HTML には、入力コードが表示されないように、工夫してみた

参考文献