AutoML Natural Languageでバッチ予測をしてみた

こんにちは。若原です。

AutoML Natural Languageでオンライン予測をする記事はよく見かけますが、
バッチ予測の記事はあまり見かけないので、バッチ予測について書きます。


AutoML Natural Languageとは

カスタムの機械学習モデルをビルドしてデプロイし、ドキュメントの分析、分類、エンティティの識別、態度の評価を行えます。

AutoMLのドキュメント


バッチ予測の特長

オンライン予測とは違い、モデルをデプロイせずに非同期で予測を実行できます。
(モデルをデプロイしている時間のコストがかからない)


バッチ予測を実行する

予測の目的

夏目漱石の「こころ」のテキストから作者を予測する。

使用するモデル

小説の作者をカテゴリのラベル、小説をドキュメントとした教師データ作成して、モデルのトレーニングをしました。
(詳しい方法はこちら)

今回教師データとして使った作品 (青空文庫から用いました。)

作者 タイトル
夏目漱石 吾輩は猫である
夏目漱石 元日
夏目漱石 一夜
森鴎外 舞姫
森鴎外 みちの記
森鴎外 妄想

予測するデータの用意

予測は1テキスト1ファイルの単位で、ファイルはGCSにアップロードする必要があります。

例)
GCSのファイルパス:

gs://bucket/kokoro.txt

ファイルの内容:
夏目漱石の「こころ」


次に、上記でGCSにアップロードしたファイルのパスを記述したCSVファイルを作成して、 同じくGCSにアップロードをします。

例)
GCSのファイルパス:

gs://bucket/predict.csv

ファイルの内容:

gs://bucket/kokoro.txt

※ ファイルパスを複数記入すれば複数の予測が可能です。


スクリプトで予測を実行

予測に使用するモデルのIDを調べます。

モデルIDの場所

下記が実行するスクリプトの例です。

from google.cloud import automl

# プロジェクト番号
project_number = "000000000000"
# モデルのID
model_id = "TCN0000000000000000000"
# バッチ予測する対象のファイルパスの一覧が載ったファイルのGCSのファイルパス
input_uri = "gs://bucket/predict.csv"
# バッチ予測結果を出力するGCSのファイルパス
output_uri = "gs://bucket/result"

prediction_client = automl.PredictionServiceClient()
model_full_id = prediction_client.model_path(
    project_number, "us-central1", model_id
)

gcs_source = automl.types.GcsSource(input_uris=[input_uri])
input_config = automl.types.BatchPredictInputConfig(gcs_source=gcs_source)
gcs_destination = automl.types.GcsDestination(output_uri_prefix=output_uri)

output_config = automl.types.BatchPredictOutputConfig(
    gcs_destination=gcs_destination
)

prediction_client.batch_predict(model_full_id, input_config, output_config)

実行結果

GCSに次のようなファイルが生成されました。
gs://bucket/result/prediction-sample_{日付}/text_classification_1.jsonl

{"textSnippet":{"contentUri":"gs://bucket/kokoro.txt"},"annotations":[{"annotationSpecId":"AnnotationSpecId","classification":{"score":0.99810386},"displayName":"mori_ogai"},{"annotationSpecId":"AnnotationSpecId","classification":{"score":0.0018961655},"displayName":"natsume_soseki"}]}

今回は夏目漱石の「こころ」は森鴎外である可能性が高いと予測されました。

この予測に基づいてデータを活用する例としては、
下記など挙げられるかと思います。
“森鴎外を好む人に、夏目漱石の「こころ」を推薦する”

参考資料