Amazon ComprehendのTopic modelingを使ってみる #reinvent

はじめに

今日発表されたAmazon Comprehend。速報記事は以下です。

今回はTopic modelingを使ってみました。

やってみた

S3でインプット用とアウトプット用のバケットを作っておきます。両方ともComprehendと同じリージョンで作って下さい。またインプット用のバケットには英文のテキストファイルをアップロードしておきます。

[Topic modeling]画面で[Create]ボタンをクリックします。

Create topic modeling job画面になります。Select input dataでは[Mydata]を選択します。[S3 data location]はインプットとなるバケットを指定します。Input formatは[One document per file]か[One document per line]を選択します。今回はper fileとしました。

[Number of topics]と[Job Name]は適当に設定します。

Select output locationのS3 data locationはアウトプット用のバケットを指定します。またSelect an IAM roleでは[Create a new IAM role]を選択し、[Name suffix]は適当に設定します。[Create job]をクリックします。

Jobが実行され、完了するとStatusがCompletedになります。

Jobをクリックすると、アウトプット用のバケットにどこに保存されたのかが分かります。ファイル名は「output.tar.gz」です。

「output.tar.gz」をダウンロードして解凍すると、以下の2ファイルがあります。

topic-term.csvは、トピック毎に出現する単語をまとめたものです。

topic,term,weight
000,condition,0.00346024
000,bank,0.00346024
000,spot,0.00346024
000,dark,0.00346023
000,cripple,0.00346023
000,wallow,0.00346024
000,vast,0.00346024
000,corner,0.00346023
000,alleghenies,0.00346023
(--snip--)

doc-topic.csvは、どのファイルがどのトピックに紐付けられているかを示します。今回は1つしかファイルを配置しなかったので、トピック000も001も同じファイルとなっています。

docname,topic,proportion
ihaveadream.txt,000,0.55908
ihaveadream.txt,001,0.44092

こんな感じで、S3バケットに配置されたファイルをジョブ実行によって分析することが出来ます。あとはLambda + Cloudwatch eventsあたりでスケジューリングすれば、定期的な分析が可能です。

さいごに

TwitterのようなSNSのタイムラインを抜いて分析して結果をDBに格納して表示すると、流行りのキーワードを簡単に把握することが出来ます。面白そうですね。