AWSで始める機械学習その1『Comprehend Customを使おう!』

AWS運用自動化サービス「Cloud Automator」

AWSではマネージドな機械学習サービスが様々提供されています。

ComprehendやTranscribe等で、ユーザーがInputを与え簡単に機械学習で予測することはもちろん、SageMakerで

しかし、私のような機械学習初心者からすると、いきなりSageMakerを使うのはハードルが高く、ComprehendやTranscribeでできる範囲で予測を行うにとどまってしまいます。

ということで、AWSのサービスを使いつつ、ざっくり機械学習についてできることを増やしていこうというのがこの記事の目的です。

Comprehend Custom<とは?

Amazon Comprehendは自然言語処理のマネージドサービスです。文章を与えればエンティティ分析・感情分析・キーフレーズ分析等々が簡単にできます。

Amazon ComprehendにはComprehend Customとおいう機能もあります。こちらは、ユーザーが学習データを用意するだけで簡単にモデルが作成できるというものです。

機械学習の知識がなくとも簡単に利用できるので、機械学習初心者ユーザーにとってはとてもありがたい機能です。

Comprehend Customでは2018/04/02時点でCustom ClassificationとCustom Entity Recognitionが利用できます。

Custom Classificationは、独自のデータでトレーニングしたモデルで文章の分類を行えます。Custom Entity Recognitionも同様に、独自のデータでトレーニングしたモデルでエンティティ分析ができます。

実際に使ってみる

今回は学習データの用意が簡単なCustom Classificationを利用します。

学習データ用意

Custom Classificationのドキュメントに学習データについて記載があります。各カテゴリにつき1000の文章があることが推奨されるそうです。今回はでお試しなのでEC2, IAM, Auroraのドキュメントから、それぞれ50の文章を抜粋して、以下のようなCSVファイルを作成し学習データとします(”,” や “.” は抜いてあります

あとはS3バケットへ保存すればOKです。

Comprehend Customでトレーニング

今回はComprehendのコンソールからトレーニングを実行します。

「Cutom Classification」の「Train Classifier」をクリック。

Nameを入力、言語を選択します。今回は英語です。

学習データの場所を指定します。

今回Comprehend Customを利用するのは初めてなので、IAMロールは新規作成します。

これで設定は終了。あとはステータスが「Trained」になるを待つだけです。

予測してみる

それではトレーニングしたモデルで予測してみます。

Inputとするデータは以下のように作成し、S3バケットへ保存しました。(AWSサポートナレッジセンターにあるEC2の質問文です

「Create Job」をクリック。

JobのNameを入力。Analysis typeとSelect classfierはすでに選択されています。
Inputの場所を指定します。

Outputの場所を指定します。IAMロールをしていします。

ジョブ作成はこれで完了。
あとは予測結果が出るのを待ちます。StatusがCompletedとなればOKです。

結果

結果は以下のようになりました。以下は上記で記載したInputの1行目の結果です。

…….

学習データが各カテゴリで50個ずつしかなかったのと、文章が短かったこともあり、まったく精度が出ていません…

まとめ

いかがでしたでしょうか。

今回は学習データが少なかったので、精度が出ませんでしたが、データを用意するだけで、簡単にモデルをトレーニングできるということが分かったかと思います。

次回はAmazon Machine Learningを扱いたいと思います。

AWS運用自動化サービス「Cloud Automator」