---
title: "AutoML Natural Languageでバッチ予測をしてみた | grasys blog"
url: "https://blog.grasys.io/post/wakahara/automl-nl-batch-predict"
description: "こんにちは。若原です。 AutoML Natural Languageでオンライン予測をする記事はよく見かけますが、 バッチ予測の記事はあまり見かけないので、バッチ予測について書きます。 AutoML Natural Languageとは カスタムの機械学習モデルをビルドしてデプロイし、ドキュメントの分析、分類、エン…"
---

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

-   ![](/_astro/noicon.CTHOhNiB_1HMs6A.webp)[wakahara](/authors/wakahara/)
-   公開日：2020年9月15日
-   カテゴリー：[Tech](/categories/tech/)
-   タグ：[#AutoML](/tags/automl/)[#NLP](/tags/nlp/)

![AutoML Natural Languageでバッチ予測をしてみた](/_astro/og-image.DDSiu2Ny_XHpDd.webp)

こんにちは。若原です。

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

* * *

## AutoML Natural Languageとは

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

[AutoMLのドキュメント](https://cloud.google.com/natural-language/automl/docs?hl=ja)

* * *

## バッチ予測の特長

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

* * *

## バッチ予測を実行する

### 予測の目的

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

#### 使用するモデル

小説の作者をカテゴリのラベル、小説をドキュメントとした教師データ作成して、モデルのトレーニングをしました。  
([詳しい方法はこちら](https://cloud.google.com/natural-language/automl/docs/quickstart?hl=ja))

今回教師データとして使った作品 ([青空文庫](https://www.aozora.gr.jp/)から用いました。)

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

#### 予測するデータの用意

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

例)  
GCSのファイルパス:

Plain textcontent\_copy

```
gs://bucket/kokoro.txt
```

ファイルの内容:  
[夏目漱石の「こころ」](https://www.aozora.gr.jp/cards/000148/files/773_14560.html)

* * *

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

例)  
GCSのファイルパス:

Plain textcontent\_copy

```
gs://bucket/predict.csv
```

ファイルの内容:

Plain textcontent\_copy

```
gs://bucket/kokoro.txt
```

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

* * *

#### スクリプトで予測を実行

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

![AutoML Natural Languageのモデル一覧でモデルIDを確認する画面](/_astro/01-05-1-964x1024-75fae4e4.LOgU-Hs2_CYMOK.webp)

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

Plain textcontent\_copy

```
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

Plain textcontent\_copy

```
{"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"}]}
```

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

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

## 参考資料

-   [公式ドキュメント](https://cloud.google.com/natural-language/automl/docs?hl=ja)

## この記事を書いた人

[![](/_astro/noicon.CTHOhNiB_Z24aAgM.webp)](/authors/wakahara/)

### [wakahara](/authors/wakahara/)

wakaharaのプロフィールと執筆記事をご覧いただけます。

[プロフィールと記事一覧](/authors/wakahara/)