3
0

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.

【UiPath】日本語テキスト分類モデルを使ってみる(AI Center)

Posted at

はじめに

AI Centerでプリセットされている機械学習モデル「日本語テキスト分類(Japanese Text Classification)」を検証してみます。
AI Centerの大まかな使い方は以下の記事で説明しています。

つかうもの

※クラウド環境は2022年10月時点のもの

  • Automation Cloud(AI Center) Enterprise版

モデルの概要

このモデルは、日本語テキストを予め用意したクラス(カテゴリ)に分類するモデルです。
デプロイ前にパイプライン(学習)をしてから使用する必要があります。
GPUに対応しています。
パッケージ2.png

このモデルは、2018年にGoogleから発表された「BERT」という自然言語処理モデル(NLP)をベースにしています。BERTは高度な言語処理を行えるモデルで、検索やチャットボットなど様々なサービスに使用されています。

今回の検証では、某ショッピングサイトの口コミをインプットとして、商品カテゴリ別に分類してみようと思います。
パッケージ1.png

データセット

データセットは、CSVまたはJSONファイルを用意します。公式ドキュメントでは、タブ区切りのファイルでも対応できると書いてありましたが、検証してみたところエラーを解消できなかったので、とりあえず、カンマ区切りのCSVファイルを用意すれば間違いないかと思います。

今回はCSVファイルを使って検証したので、CSVファイルについて解説します。
CSVファイルで必要な列は、「分類対象の日本語テキスト」と「クラス(カテゴリ)」の2つです。それ以外の列は読み込み時に無視されるので、消す必要はありません。
後述するパイプライン実行時の環境変数で列名を指定します。

また、デフォルトの設定でフォルダに含まれているファイルすべてを読込対象とするので、複数ファイルを1つのファイルにマージする必要はありません。

今回の検証では、以下のように学習用と検証用のフォルダを用意し、その中にそれぞれCSVファイルを入れました。使用する列は、「review_body(レビュー本文)」と「product_category(商品カテゴリ)」です。
データセット1.png

パイプライン

このモデルは、フルパイプラインとGPUをサポートしています。
パイプライン実行時に使用できる環境変数は以下の通りです。

パラメータ 説明
input_column 分類対象の日本語テキストの列名(デフォルトはinput)
target_column クラス(カテゴリ)の列名(デフォルトはtarget)
csv_delimiter CSVファイルを使用する場合の区切り文字(デフォルトはカンマ区切り)
csv_name 特定のファイルのみを読込対象とする場合に指定する
csv_start_index 特定の行だけを読込対象とする場合に指定する(開始行)
csv_end_index 特定の行だけを読込対象とする場合に指定する(終了行)
evaluation_metric パイプライン画面に表示されるスコアを決める評価関数。以下から選択可能(デフォルトはaccuracy)
accuracy:正解率
precision:適合率
recall:再現率
matthews correlation:マシューズ相関係数
fscore:F値
auroc:AUC(ROC曲線の下の領域)

今回の検証では、以下のように実行しました。
かなり少ないのでスコアは期待できないですが、用意したデータセットは、5クラス(Music, Video DVD, Books, Electronics, Toys)、計100件のデータとします。
パイプライン1.png

実行結果は以下の通りです。
実行時間は15分ほど、スコアは0.5(accuracy)です。
パイプライン2.png

他の評価関数も確認しましたが、軒並み低いです。やはり、今回の検証は学習データが1クラス当たり20件と少なかったので、データをもっと用意する必要があるかもしれません。
極端ですが試しに20万件弱のデータで学習させてみたところ、GPUなしで2週間以上かかりました(途中で諦めました)。一般的にBERTベースのモデルは時間がかかるので、大量データを使用する際はGPUを使用することをお勧めします(公式ドキュメントによると5~10倍の処理速度になる模様)。
パイプライン3.png

実行結果

デプロイしたMLスキルを使ってみます。
以下のように実装しました。
検証1.png

1回目の検証は正しく分類されました。確信度は0.84なので、まあまあってところでしょうか。
検証2.png

検証の2回目です。
検証3.png

正しく分類できましたが、確信度は0.65と高くありません。
検証4.png

とりあえず2回検証しましたが、うまく分類できました。ただ、今回の検証のインプットは単文なので、複雑な自然言語だったら、この学習スコアのモデルでは、おそらく上手くいかなかと思います。

おわりに

モデルをトレーニングさせて、Studioから使うこと自体は難しくはありませんが、精度を上げるためのデータセットをどう用意したらよいか、とても難しい問題です。
機会がありましたら、別のモデルも検証してみます。

参考

3
0
0

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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?