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

Model Generator How-To: Text Classification

はじめに

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

テキスト分類の例

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

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

テキスト分類のおおまかな流れ

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

テキスト分類の概略図

まず、モデルジェネレーターで学習(トレーニング)を行います。このトレーニングでは、作家ごとの文章データを与えて、作家ごとの文章の特徴を学ばせます。このトレーニングの成果は、モデルと呼ばれます。

次に、フローデザイナーでモデルと作家ごとの予測文章を与えて、どの作家の文章かの予測を行います。

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

テキスト分類を試してみよう

テキスト分類を始める前に

まず、BLOCKS 推奨のウェブブラウザー Google Chrome を準備してください。Firefox でも構いませんが、その場合は一部機能に制限があります(後述)。このチュートリアルでは、Google Chrome の使用を前提にしています。

次に、テキスト分類のトレーニングと予測に必要な文章データを準備します。先に述べたように、BLOCKS でテキスト分類を行うには、モデルジェネレーターを使ったトレーニングが必要です。このトレーニングには、トレーニング用の文章データが必要です。また、予測するための文章データも必要です。このチュートリアルでは、BLOCKS のテキスト分類がすぐ試せるように、必要なデータ一式を準備しました。

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

機械学習のテキスト分類で使用する文書ファイル一式です。トレーニングと予測で使用する 2 種類の文章ファイルを含んでいます。

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

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

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

    ダウンロードした ZIP 形式のファイルを解凍します。下図のフォルダー構成でフォルダーやファイルが解凍されます。

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

    トレーニング用の文章(テキスト)ファイルは、分類する作家ごとにフォルダー分けして配置します。フォルダー名が分類する種類の名前として扱われます。テキストファイルの拡張子は、.txt のみに対応しています(大文字・小文字の区別なし)。

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

    • miyazawa_kenji フォルダー
    • nakajima_atsushi フォルダー
    • natsume_souseki フォルダー
  3. Google Cloud Storage(GCS)へアップロード

    トレーニングでは、GCS からトレーニングデータを読み取ります。解凍した text_classification_example フォルダーを、GCS Explorer ツールを使って GCS へアップロードします。アップロードの手順は、以下のとおりです。

    ウェブブラウザーで、BLOCKS にログインします。

    GCS Explorer を開く様子
    1. グローバルナビゲーション左端のメニューアイコン()をクリック
    2. GCS Explorer]をクリック
    GCP サービスアカウントとバケットを選択する様子
    1. GCP サービスアカウントを選択
      既に適切な GCP サービスアカウントが選択されている場合はそのまま
    2. -us-central1-data で終わるバケット名をクリック
      適切なバケットおよびフォルダーが選択されている場合はそのまま

    バケット一覧は、[GCP サービスアカウントの選択]の下にある[バケット一覧]をクリックすると表示されます。

    セルフサービスプラン(無料トライアル含む)の場合は、プロジェクト作成時にオプションを選択してバケットが同時に作成されていることを前提としています。

    バケットがひとつもない場合は、プロジェクト設定の GCP サービスアカウントの項で、バケットの作成ができます。

    バケットを作成する様子

    既に異なるバケットが作成済みの場合は、そのバケットを選択しても構いません。ただし、そのバケットのストレージクラスロケーションは、Regional かつ us-central1 である必要があります。

    フォルダーをアップロードする様子
    1. フォルダーに歯車の絵柄のボタンをクリック
    2. フォルダアップロード]をクリック

    Firefox では、GCS Explorer のフォルダーのアップロード機能は利用できません(前述の一部機能の制限)。その場合は、まず GCS Explorer のフォルダー作成機能を使って、解凍してできたフォルダー構成を GCS 上に再現します。次に、ファイルアップロード機能を使って所定のフォルダー内に各ファイルをアップロードします。ファイルのアップロード方法については、「GCS へファイルをアップロードする方法」を参考にしてください。

    アップロードするフォルダを指定する様子
    1. 先に解凍しておいた text_classification_example フォルダーをクリック
    2. アップロード]ボタンをクリック
    アップロードの再確認でアップロードボタンをクリックする様子
    1. アップロード]ボタンをクリック

    しばらくすると、text_classification_example フォルダーがアップロードされます。

    フォルダーがアップロードされた様子

    これで、テキスト分類のトレーニングと予測に必要なデータの準備ができました。

モデルジェネレーターを作成しよう

モデルジェネレーターでトレーニングするには、準備したトレーニング用のデータに対応した専用のモデルジェネレーターが必要です。

このモデルジェネレーターは、以下の手順で作成できます。

モデルジェネレーターを開く様子
  1. グローバルナビゲーション左端のメニューアイコン()をクリック
  2. モデルジェネレーター]をクリック

モデルジェネレーターがひとつもない場合は、「モデルジェネレーターとは」の画面が表示されます。

モデルジェネレーターとはの画面
  1. 利用開始]ボタンをクリック

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

モデルジェネレーターがひとつ以上ある場合は、作成済みのモデルジェネレーターの一覧が表示されます。

モデルジェネレーター一覧画面
  1. 画面左上の[追加]ボタンをクリック

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

テキスト分類タイプを選択する様子
  1. テキスト分類タイプ (beta)]をクリック
  2. 次へ]ボタンをクリック
名前を設定する様子
  1. 名前を入力(例:作家のテキスト分類
  2. 次へ]ボタンをクリック

無料トライアルおよびセルフサービスプランの場合は、画面の案内に沿って以下のステップを進めてください。

  1. GCP サービスアカウントの設定
  2. ストレージの設定
ラベルを設定する様子
  1. ラベルをまとめて入力(例:miyazawa_kenji,nakajima_atsushi,natsume_souseki
  2. ボタンをクリック
設定したラベルを確認する様子
  1. ラベルが追加されたことを確認
  2. 次へ]ボタンをクリック
これまでの設定内容を確認する様子
  1. 設定内容を確認し、[完了]ボタンをクリック
モデルジェネレーター作成の確認画面
  1. OK]ボタンをクリック

これで、準備したトレーニング用データに対応したモデルジェンレーターが作成できました。

モデルジェネレーターでトレーニングしよう

モデルジェネレーターが作成できたので、準備したトレーニング用のデータでトレーニングを行います。

トレーニングの設定を開始する様子
  1. トレーニング開始]ボタンをクリック
トレーニング名を入力する様子
  1. トレーニング名を入力(例:1回目のトレーニング
  2. アイコンをクリック
GCS 上のトレーニング用データフォルダーを選択する様子
  1. -data で終わるバケット名の アイコンをクリック
  2. text_classification_example アイコンをクリック
  3. training/ をクリック
  4. 選択]ボタンをクリック
設定した内容でトレーニングを開始する様子
  1. 開始]ボタンをクリック
トレーニング中の状況を確認する様子

トレーニングが始まり、トレーニングの状況が画面内で確認できます。

トレーニングの所要時間は、4 時間ほどです(時間はサーバー側の状況により前後)。しばらくお待ちください。

トレーニングが成功した状況を確認する様子

トレーニングが成功で終わると、トレーニング一覧の当該トレーニングのステータスが成功に変わります(上図例では、1 回目のトレーニングの正確率が悪かったため、2 回トレーニングを実施)。

このトレーニングのモデルを予測で使用するためには、このトレーニングのモデルを予測で使用することを明示する必要があります。モデルジェネレーターでは、この行為を適用と呼びます。

モデルを適用する様子
  1. arrow_drop_down アイコンをクリック
  2. 適用対象から[本番用]をクリック
  3. 適用]ボタンをクリック

適用対象について詳しくは、モデルジェネレーターヘルプの「トレーニングを一覧する」のアクションの項を参照してください。

もし、トレーニングが失敗する場合は、再度トレーニングを実行してみてください。トレーニング失敗の理由の確認方法については、「操作中にエラーとなったら」を参考にしてください。

フローデザイナーを作成しよう

予測は、フローデザイナーで行います。フローデザイナーのフローテンプレート作成機能を活用すると、簡単に画像分類を予測するためのフローが作成できます。このチュートリアルでは、このフローテンプレートを使った方法を解説します。

フローデザイナーの利用を開始する様子
  1. グローバルナビゲーション左端のメニューアイコン()をクリック
  2. フローデザイナー]をクリック
利用開始ボタンをクリックする様子
  1. 利用開始]ボタンをクリック

既にフローデザイナーを作成している場合は、「フローデザイナーとは」の画面は表示されません。後で述べるフローデザイナーの一覧画面が表示されます。その場合は、既存のフローデザイナーの名前をクリックして、以降の作業を進めてください。もし無料トライアル以外をお使いで、新たにフローデザイナーを作成できるライセンス枠がある場合は、フローデザイナー一覧画面の左上にある[追加]ボタンをクリックしてください。

名前を付けてフローデザイナーを作成する様子
  1. 名前を入力(例:チュートリアル
  2. 作成]ボタンをクリック

これで、フローデザイナーが作成できました。

フローテンプレートでフローを生成しよう

作成したフローデザイナーのフローテンプレート作成機能を使って、予測を行うフローを作成します。

フローデザイナーを開く様子
  1. チュートリアル]をクリック

ウェブブラウザーの新しいタブにフローデザイナーが開きます。

フローテンプレート作成ボタンをクリックする様子
  1. フローテンプレート作成]ボタンをクリック
作成するフローの種類としてテキスト分類予測を選択する様子
  1. テキスト分類予測]をクリック
  2. 次へ]ボタンをクリック
フロー名を設定する様子
  1. フロー名を入力(例:作家の予測
  2. 次へ]ボタンをクリック
作家の予測をオンラインで実施するように設定する様子
  1. 作家のテキスト分類 (テキスト分類タイプ)]をクリック
  2. オンライン予測]をクリック
  3. 次へ]ボタンをクリック
GCS 上の予測用データを設定するためにフォルダーアイコンをクリックする様子
  1. GCS URL の アイコンをクリック
GCS 上の予測用データの場所を選択する様子
  1. -data で終わるバケット名の をクリック
  2. text_classification_example をクリック
  3. prediction をクリック
  4. 選択]ボタンをクリック
すべての予測用データを対象とする設定を行う様子
  1. GCS URL の末尾に * を入力(例:.../text_classification_example/prediction/*
  2. 次へ]ボタンをクリック
予測結果の出力先を DataEditor に設定する様子
  1. ストレージの選択で[DataEditor]をクリック
  2. データの名前を入力(例:作家の予測結果
  3. データセットを入力(例:tutorial
  4. テーブルを入力(例:text_classification_example_results
  5. 次へ]ボタンをクリック
予測フローをフローデザイナー上に配置するよう指示する様子
  1. 配置]ボタンをクリック
作成したフローを保存する様子
  1. 保存]ボタンをクリック

これで、予測フローの作成は完了です。

作成したフローは、必ず保存しましょう。保存しないと、フローは実行できません。また保存せずにフローデザイナーのタブを閉じたり、ウェブブラウザーを閉じると、作成したフローは無くなります。

生成したフローで予測をしよう

早速、作成した予測フローで、予測を実行してみます。

フローを実行する様子
  1. フロー先頭の[作家の予測]ブロック右端の more_vert をクリック
  2. フローの実行]をクリック

フローの実行状況を確認するには、フローの実行ログを参照します。

メニューからログを見るをクリックする様子
  1. ログを見る]をクリック
実行中のログを確認する様子
  1. ステータスが[実行中]となっていることを確認

フローの実行が終わるまで、しばらく待ちます。

フローの実行が成功で終了したことを確認する様子
  1. ステータスが[成功]となることを待つ

これで予測の完了です。

もし、予測に失敗する場合は、再度フローを実行してみてください。フローの実行に失敗する理由の確認方法については、「操作中にエラーとなったら」を参考にしてください。

予測結果を確認しよう

予測結果は、DataEditor のデータとして出力しているので、DataEditor で確認します。別タブにある BLOCKS の画面(フローデザイナーの一覧画面)に切り替えます。

DataEditor を開く様子
  1. グローバルナビゲーション左端のメニューアイコン()をクリック
  2. DataEditor]をクリック
予測結果の内容に表示を切り替える様子
  1. 作家の予測結果]をクリック
データを表示するように指示する様子
  1. データを表示]をクリック
予測結果を表示した画面

各列のそれぞれの意味は、以下のとおりです。

名前 説明
key

予測用テキストファイルの GCS URL です。

label

予測結果です。

今回の例では、各作家に対応した以下のいずれかが表示されます。

  • miyazawa_kenji
  • nakajima_atsushi
  • natsume_souseki
score

予測結果の確からしさです。数値は、0 から 1 の範囲で、1 が 100% を示します。

score_miyazawa_kenji
score_nakajima_atsushi
score_natsume_souseki

各分類ごとにどのくらいの可能性があるかを示す値です。数値は、0 から 1 の範囲で、1 が 100% を示します。

DataEditor のデータは、CSV ファイルに書き出せます(エクスポート)。CSV ファイルに書き出すことで、データをさまざまな形で取り扱うことができて便利です。

では、実際に CSV ファイルをエクスポートしてみます。

エクスポートを開始する様子
  1. テーブルの操作]をクリック
  2. テーブルエクスポート]をクリック
エクスポート先を設定する様子
  1. エクスポート先から[Google Cloud Storage]をクリック
  2. 出力先フォルダー(GCS)から末尾が -data の項目をクリック
  3. エクスポート]ボタンをクリック
エクスポート完了画面
  1. ファイル名をクリックして PC に CSV ファイルを保存
  2. OK]ボタンをクリック

エクスポート機能は、データを Google Cloud Storage にファイルを保存する機能ですが、エクスポート完了の画面で表示されるリンクをクリックすることで PC にもファイルが保存できます。

操作中にエラーとなったら

エラー内容は、モデルジェネレーターの場合は、トレーニング詳細画面の「エラー内容」で確認できます。以下に、モデルジェネレーターでのエラー内容の確認方法を紹介します。

トレーニング詳細画面を表示する様子
  1. ステータスが[失敗]と表示されているトレーニングのトレーニング名をクリック
エラー内容を確認する様子
  1. エラーログ]をクリック
  2. エラーログをコピーする]をクリック(問い合わせをする場合)

フローデザイナーの場合は、先に紹介したログパネルで確認できます。

フローデザイナーのログパネルでのエラー内容を確認する様子

エラー部分が赤字で表示されます。

エラーの原因を特定するには、エラー部分を中心に前後のメッセージも含めて読み解くと良いです(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。

エラーが発生し、何度リトライしても失敗するようであれば、グローバルナビゲーション右端のユーザーアイコンをクリックして表示される[お問い合わせ]からエラー内容をテキストファイル化したファイルを添付してお問い合わせください。エラー内容をテキストファイル化する場合は、赤字のエラー部分だけではなく、すべてのエラーメッセージを含めてください(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。

フローデザイナーでエラーが発生する場合は、フローをエクスポートした JSON ファイルも添付してください。

お問い合わせについて詳しくは、基本操作ガイドの「お問い合わせ」を参考にしてください。

まとめ

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

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

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