基本操作ガイド

Basic Guide

BLOCKS の機械学習を使ったテキスト分類の方法

BLOCKS の機械学習を使ったテキスト分類の方法

この機能は、ベータ版です。正式版リリース後は、手順含め新たに作り直しとなる可能性があります。その点を踏まえた上で、ご利用願います。

また、ベータ版での提供となるため、一部の機能が正常に動作しない可能性があります。機能改善や不具合などのフィードバックは、フォーラムお問い合わせで情報提供をお願いします。フィードバックの内容は MAGELLAN BLOCKS の品質向上のために利用いたします。

このドキュメントでは、文学作品の抜粋文章からその作家が誰であるかを判定する例を使って、BLOCKS 機械学習のテキスト分類の使い方を解説します。

テキスト分類の例

BLOCKS で機械学習を使ったテキスト分類を行うには、「モデルジェネレーター」と「フローデザイナー」を使用します。

テキスト分類の概略図
  1. モデルジェネレーターで、作家ごとの文章(トレーニングデータ)の特徴を学習(トレーニング)します。
  2. フローデザイナーで、トレーニングで使用していない文章(予測データ)からその作家を予測します。

トレーニングデータや予測データは、あらかじめ用意しておく必要があります。

準備

もし、まだ BLOCKS のアカウントをお持ちではない場合は、「トライアルご利用の流れ」を参考にして、無料トライアルをお申し込みください。

今回は、テキスト分類をすぐ試せるように、トレーニングと予測に必要なデータを一式用意しました。以下の表の説明を参考にして、ご自身の環境に各種データを準備願います。

データ 説明
サンプルデータ

テキスト分類のトレーニングと予測に使用するデータ一式です。

  1. サンプルデータのダウンロード

    左のリンクをクリックして、サンプルデータをダウンロードします。サンプルデータは、ZIP 形式で複数のフォルダーやファイルをひとつにまとめています。

  2. ダウンロードしたファイルの解凍

    ダウンロードした ZIP 形式のファイルを解凍します。下図(クリックすると拡大表示)のフォルダー構成でフォルダーやファイルが解凍されます。

    サンプルデータのファイルとフォルダーの構成図

    トレーニング用の文章(テキスト)ファイルは、分類する作家ごとにフォルダー分けして配置します。フォルダー名が分類する種類の名前として扱われます。

    今回の例では、中島敦・夏目漱石・宮沢賢治の 3 作家で分類するため、それぞれ nakajima_atsushi フォルダー・natsume_souseki フォルダー・miyazawa_kenji フォルダーに分けて、作品ファイルを配置しました。

  3. Google Cloud Storage(GCS)へアップロード

    トレーニングでは、GCS からトレーニングデータを読み取ります。「GCS へファイルをアップロードする方法」を参考にして、text_classification_example フォルダーを GCS へアップロードしてください。

サンプルフロー

サンプルフローは、[モデルジェネレーター予測(オンライン)]ブロックを使用した最もシンプルな予測フローを準備しました。

  1. サンプルフローのダウンロード

    左のリンクをクリックして、サンプルフローをダウンロードします。

  2. フローデザイナーへインポート

    ダウンロードしたサンプルフローをフローデザイナーへインポートします。

    サンプルフローのインポート方法については、「インポート」を参考にしてください。

トレーニング

まず、モデルジェネレーターを使って、作家ごとの文章の特徴をつかませるトレーニングを行います。

今回は、中島敦・夏目漱石・宮沢賢治それぞれの 10 作品を使ってトレーニングさせてみます。

モデルジェネレーターの利用手順は、以下のとおりです。

  1. モデルジェネレーターの利用ががひとつもない場合は、「モデルジェネレーターとは?」の画面の[利用開始]ボタンをクリックします。

    モデルジェネレーターとは?の画面

    info_outline ライセンス不足の場合は、その旨のメッセージが表示されます(管理者の場合は、ライセンス購入画面を表示)。メッセージが表示された場合は、組織の管理者に問い合わせてください(管理者の場合は、ラインセンスを購入してください)。

  2. モデルジェネレーターの利用がひとつ以上ある場合は、画面左上の[追加]ボタンをクリックします。

    モデルジェネレーター一覧画面

    info_outline ライセンス不足の場合は、その旨のメッセージが表示されます(管理者の場合は、ライセンス購入画面を表示)。メッセージが表示された場合は、組織の管理者に問い合わせてください(管理者の場合は、ラインセンスを購入してください)。

  3. テキスト分類タイプ]をクリックし、更に[次へ]ボタンをクリックします。

    モデルジェネレーターのタイプ選択画面
  4. 名前を入力し、更に[次へ]ボタンをクリックします。

    モデルジェネレーター(テキスト分類タイプ)のサービス名設定画面
  5. 無料トライアルおよびセルフサービスプランの場合は、画面の案内に沿って以下のステップを進めてください。

    1. GCP サービスアカウントの設定
    2. ストレージの設定
  6. ラベルを設定します。

    モデルジェネレター(テキスト分類タイプ)のラベル設定画面

    今回の例では、中島敦・夏目漱石・宮沢賢治の 3 作家で分類するため、それぞれ nakajima_atsushi フォルダー・natsume_souseki フォルダー・miyazawa_kenji フォルダーに分けて、トレーニング用の作品ファイルを配置しました。

    このため、nakajima_atsushi,natsume_souseki,miyazawa_kenji と入力して、更にボタンをクリックします。

    ラベルが追加されたことを確認し、[次へ]ボタンをクリックします。

最後に、設定内容を確認し[完了]ボタンをクリックすると、モデルジェネレーターが作成されます。

引き続き、このモデルジェネレーターを使って、トレーニングを実施します。[トレーニング開始]ボタンをクリックします。

モデルジェネレーター(テキスト分類タイプ)のトレーニング開始画面

ここでは、以下の内容でトレーニング情報を設定します。

項目 内容
トレーニング名

トレーニングに名前を付けます。

例えば、「1 回目のトレーニング」などとします。

トレーニングデータアップロード
(フルサービスプランのみ)

フルサービスプランの場合、トレーニングデータのアップロード先に使用する Google Cloud Storage (GCS) の場所が[gs://バケット名]の形式で表示されます。

リンクをクリックすると、ウェブブラウザーの新しいタブで Google Cloud Console が開き、この GCS にアクセスできます(プロジェクト設定の GCP アクセスで登録した Google アカウントによるログインが必要)。

今回は、「準備」で既にトレーニングデータをアップロードしているため、使用しません。

ドキュメントフォルダー

トレーニングに使用するデータをアップロードしたフォルダーを指定します。

ここでは、gs://my-bucket/text_classification_example/training/ と指定します。

バケット名 my-bucket の部分は、ご自身の環境のバケット名に読み替えてください。

トレーニングの経過制限時間

トレーニングにかける最大の時間を指定します。

ここでは、初期値の 180 (3 時間)のままとします。

トレーニングの説明

トレーニングの説明を記入します。

今回は、空欄のままとします。

開始]ボタンをクリックすると、トレーニングが始まり、トレーニング状況を確認できます。

モデルジェネレーター(テキスト分類タイプ)の詳細画面

トレーニングが終わるとステータスが成功に変わり、[適用]ボタンが表示されます。適用対象を[検証用]とし、[適用]ボタンをクリックしてください。これで、フローデザイナーを使って予測が行えます。

適用対象は、[本番用]と[検証用]の 2 種類から選択できます。[本番用]は、業務の本番運用に、[検証用]は本番運用前の検証用にと使い分けることができます。今回は、テキスト分類を試してみるという観点から[検証用]を選択しています。

予測

予測は、フローデザイナーで行います。今回用意したフローは、下図のとおりです。

サンプルフローの解説図

予測は「モデルジェネレーター予測(オンライン)」ブロックを使用します。このブロックは、変数に設定された予測データとモデル(モデルジェネレーターのトレーニング結果)を使って予測を行います。今回は、「オブジェクト生成」ブロックを使って、予測に使う文章ファイルへの情報を変数に設定します。

予測データの設定方法は、「オブジェクト生成」ブロックを使用する方法以外にもいろいろとあります。「モデルジェネレーター予測(オンライン)ブロックを使ったいろいろな予測の方法」で紹介しています。実際の活用にあたっては、これらの中から適切な方法を選択してください。

以下に、各ブロックのプロパティの設定値を示します(初期値と異なる設定と重要なプロパティのみ)。

ブロック
<カテゴリー>
プロパティ
オブジェクト生成
<基本>
結果を格納する変数 _
データ
オブジェクト生成用サンプルデータ

(画像をクリックすると拡大表示されます。)

バケット名 my-bucket の部分は、ご自身の環境のバケット名に置き換えてください。

モデルジェネレーター予測(オンライン)
<機械学習>
GCP サービスアカウント 複数の GCP サービスアカウントがある場合は、適切な GCP サービスアカウントを選択
モデル 先ほど作成したモデルジェネレーターのモデルを選択
予測に使うバージョン 検証用
予測因子データの変数 _.data
予測結果変数 _
ログへ出力
<基本>
ログへ出力する変数 _

このフローを実行するには、[フローの開始]ブロックのプロパティ内にある[play_circle_outline]ボタンをクリックします。

実行が成功するとログに以下のような内容が出力されます。ログは、画面最下部の「ログ」と書かれた灰色のバーをクリックし、ステータスが「成功」の部分をクリックすると表示されます。

{
  "predictions": [
    {
      "label_index": 2,
      "score": [
        0.2577357292175293,
        0.05768238380551338,
        0.6845819354057312
      ],
      "key": "手紙 / 夏目漱石",
      "label": "natsume_souseki"
    },
    {
      "label_index": 1,
      "score": [
        0.2771425247192383,
        0.5818609595298767,
        0.14099648594856262
      ],
      "key": "セトナ皇子 / 中島敦",
      "label": "nakajima_atsushi"
    },
    {
      "label_index": 0,
      "score": [
        0.9431750178337097,
        0.02120055817067623,
        0.03562438488006592
      ],
      "key": "やまなし / 宮沢賢治",
      "label": "miyazawa_kenji"
    }
  ]
}

"label_index""score""key""label" で 1 セットの予測結果です。1 セットで 1 つの文章の予測に対応しています。この例の場合は、3 行目から 12 行目で 1 セット・13 行目から 22 行目で 1 セット・23 行目から 32 行目で 1 セットの計 3 セットで 3 文章分の予測結果です。

"label_index""score""key""label" のそれぞれの意味は、以下のとおりです。

名前 説明
"key"

予測にキーを指定した場合は、その値が出力されます。

予測にキーを指定していない場合は、予測に使用した文章ファイルの GCS URL が出力されます。

"label"

予測結果となる分類のラベル(トレーニングデータのフォルダー名)です。

今回の場合は、以下のいずれかになります。

  • "miyazawa_kenji"
  • "nakajima_atsushi"
  • "natsume_souseki"
"score"

分類ごとの予測の確からしさが、カンマ(,)区切りで列挙されています。

"label_index"

"score" に列挙されている確からしさのうち、どれが予測結果として採用されたのかを示す数値です。

0 が先頭の確からしさ、1 がその次の確からしさ、2 が更にその次の確からしさを示します。

以下は、この予測結果を整理した表です。

予測文書ファイル
(作品名 / 作者名)
予測結果
手紙 / 夏目漱石

約 68.46 % の確率で、夏目漱石です。

セトナ皇子 / 中島敦

約 58.19 % の確率で、中島敦です。

やまなし / 宮沢賢治

約 94.32 % の確率で、宮沢賢治です。

まとめ

このように、BLOCKS を使うと、文章ファイルをフォルダーごとに分けて準備するだけの手軽さで、機械学習によるテキスト分類が利用できます。

最後に、BLOCKS のテキスト分類用に準備する文章ファイルの留意事項をまとめておきます。

  • トレーニングに使用する文章ファイルは、分類する種類ごとにフォルダーに分けて配置します。
  • トレーニングで使用する文章は、ファイルの先頭から 2,000 文字までです。2,000 文字を超える文章を用意しても構いませんが、2,000 文字以降は無視されます。2,000 文字を超えるすべての文章をトレーニングで使用したい場合は、複数ファイルに分割してください(各ファイル 2,000 文字以内)。
  • 文書ファイルは、BOM なし UTF-8 で準備してください。