Amazon Comprehendを利用して、文章内の感情(肯定的/否定的/中間)を分析する手法を紹介します。
Comprehendは日本語を含む多言語で、感情以外もエンティティや言語、キーフレーズ、構文を分析できますので、グローバルにおける製品レビューの評価等にも活用できます。
Amazon Comprehendとは
Amazon Comprehend は UTF-8 形式のテキストファイルからドキュメント内のエンティティ、キーフレーズ、言語、感情を読み取り分析することができるサービスです。
- Entities –ドキュメントで識別された、人物、場所、場所などのエンティティのリストを返します。
- キーフレーズ –ドキュメントに表示されるキーフレーズを抽出します。たとえば、フットボールゲームに関するドキュメントは、チームの名、会場の名前、最終的なスコアを返します。
- PII –住所、銀行口座番号、電話番号など、個人を識別するために使用できる個人データを検出するためにドキュメントを分析します。
- Language – ドキュメントの主要な言語を識別します。 100 個の言語を識別できます。
- 感情 – Amazon Comprehend はドキュメントの感情的な感情を決定します。感情は、正、中立、負、混合のいずれかです。
- 構文 – Amazon Comprehend はドキュメント内の各単語を解析し、その単語の品詞部分を決定します。
たとえば、「今日はシアトルで雨が降っています」という文では、「it」は代名詞として、「raining」は動詞として、「Seattle」は適切な名詞として識別されます。
本記事では『感情』を分析する手法を紹介します。
例えば、製品に関するレビューをこの分析にかけることで、レビュワーが当該製品に対してどのような感情を抱いているかを定量的に分析することができます。
なおAWSが提供するチュートリアルでは、Amazon QuickSightを利用して可視化していますが、今回は分析結果をS3に格納するまでを投稿します。
なお、本記事は下記のチュートリアルを参考にしています。
https://docs.aws.amazon.com/ja_jp/comprehend/latest/dg/comprehend-dg.pdf
実施手順
今回は以下の手順で実施しました。
Step1:Amazon S3にドキュメントを追加する
Step2:Amazon S3でドキュメントに対して分析ジョブを実行する
【Step1】Amazon S3にドキュメントを追加する
Amazon Comprehend 分析ジョブを開始する前に、カスタマーレビューのサンプルデータセットを Amazon Simple Storage Service (Amazon S3) に保存する必要があります。Amazon S3 は、バケットと呼ばれるコンテナにデータをホストします。
Amazon Comprehend は、バケットに保存されたドキュメントを分析でき、分析結果をバケットに送信します。このステップではS3 バケットを作成し、バケットに入力および出力フォルダを作成して、サンプルデータセットをバケットにアップロードします。
サンプルデータはチュートリアル内に用意されていますが、英語であるため適当なサイトから日本語のレビューデータを取ってきても面白いと思います(著作物の引用にはご注意ください)。
ただしUTF-8のデータしか分析できないためご注意ください。UTF-8への変換方法はこちらのサイトを参考にしました。
S3 バケットを作成する
- AWS マネジメントコンソールにサインインして Amazon S3 コンソールを開きます。
- [バケット] で、[バケットの作成] を選択します。
- [バケット名] に、バケットの目的を説明するグローバルに一意の名前を入力します。
- [リージョン] で、バケットを作成する AWS リージョンを選択します。選択するリージョンは Amazon Comprehend をサポートしている必要があります。レイテンシーを減らすには Amazon Comprehendでサポートされている地理的場所に最も近い AWS リージョンを選択します。Amazon Comprehendをサポートするリージョンのリストについては、 グローバルインフラストラクチャガイドの「リージョン表」を参照してください。
- [Bucket settings (バケット設定)] は、[Block Public Access (パブリックアクセスブロック)]、[BuckeVersioning (バケットバージョニング)]、[Tags (タグ)] のデフォルト設定のままにします。
- [Default encryption (デフォルトの暗号化)] で、[Disable (無効化)] を選択します。
- バケット設定を確認し、[バケットの作成] を選択します。
入力データのアップロード
バケットを用意できたところで、サンプルデータセット をアップロードamazon-reviews.csvします。Amazon S3 コンソール を使用して Amazon S3 バケットにデータをアップロードできます。
サンプルドキュメントをバケットにアップロードする
Amazon S3 コンソールで、サンプルデータセットファイルを 入力フォルダにアップロードします。
サンプルドキュメントをアップロードするには
- Amazon S3 コンソールを開きます。
- [バケット] で、バケットのリストからバケットを選択します。
- input フォルダを選択し、[アップロード] を選択します。
- [ファイルの追加] を選択し、コンピュータ上の amazon-reviews.csv ファイルを選択します。
- [Next] を選択します。
- [Manage users]、[Access for other AWS accounts]、[Manage public permissions] はデフォルト設定のままにします。[Next] を選択します。
- [Storage class (ストレージクラス)] で、[Standard (標準)] を選択します。
- [暗号化] で、[なし] を選択します。
- [メタデータ] と [タグ] は空白のままにします。
- [次へ] を選択して設定を確認し、[アップロード] を選択します。
【Step2】Amazon S3でドキュメントに対して分析ジョブを実行する
Amazon S3 にデータを保存すると Amazon Comprehend 分析ジョブの実行を開始できます。感情分析ジョブは、ドキュメントの全体的なムード (肯定的、否定的、中立、または混合) を決定します。サンプルデータセットから感情を抽出します。
感情の分析
- Amazon Simple Storage Service (Amazon S3) バケットを作成したのと同じリージョンにいることを確認します。別のリージョンで作業している場合は、ナビゲーションバーで、リージョンセレクタから S3 バケットを作成した AWS リージョンを選択します。
- Amazon Comprehend コンソール を開きます。
- [Launch Amazon Comprehend] を選択します。
- ナビゲーションペインで、[Analysis jobs (分析ジョブ)] を選択します。
- [ジョブの作成] を選択します。
- [Job settings (ジョブ設定)] セクションで、以下の操作を行います。
a. [名前] に「」と入力しますreviews-sentiment-analysis。
b. [Analysis type] で、[Sentiment] を選択します。
c. [Language] で、[Japanese] を選択します。※分析するドキュメントの言語に応じて変更
d. [ジョブの暗号化] はオフのままにしておきます。 - [入力データ] セクションで、以下の操作を行います。
a. [データソース] で、[My documents (マイドキュメント)] を選択します。
b. [S3 location (S3 の場所)] で、[Browse S3 (S3 の参照)] を選択し、バケットのリストからバケットを選択します。
c. S3 バケットの [オブジェクト] でinput、フォルダを選択します。
d. input フォルダで、サンプルデータセットamazon-reviews.csvを選択し、[Choose (選択)] を選択します。
e. [Input format] で、[One document per line] を選択します。 - [出力データ] セクションで、以下の操作を行います。
a. [S3 location (S3 の場所)] で、[Browse S3 (S3 の参照)] を選択し、バケットのリストからバケットを選択します。
b. S3 バケットの [Objects (オブジェクト)] でoutput、フォルダを選択し、[Choose (選択)] を選択します。
c. [暗号化] はオフのままにしておきます。 - [アクセス許可] セクションで、以下の操作を行います。
a. [IAM ロール] で、[IAM ロールの作成] を選択します。
b. [Permissions to access] で、[Input] および [Output S3 buckets] を選択します。
c. [名前のサフィックス] に「」と入力しますcomprehend-access-role。このロールは AmazonS3 バケットへのアクセスを提供します。 - [ジョブの作成] を選択します。
出力をダウンロードする
Amazon Comprehend は、Gzip 圧縮を使用して出力ファイルを圧縮し、tar アーカイブとして保存します。出力ファイルを抽出する最も簡単な方法は、output.tar.gzアーカイブをローカルにダウンロードすることです。このステップでは、感情の出力アーカイブをダウンロードします。
出力ファイルのダウンロード
各ジョブの出力ファイルを見つけるには Amazon Comprehend コンソールで分析ジョブに戻ります。分析ジョブは、出力の S3 の場所を提供します。出力ファイルはここでダウンロードできます。
出力ファイルをダウンロードする手順
- Amazon Comprehend コンソールのナビゲーションペインで、[Analysis jobs (分析ジョブ)] に戻ります。
- 感情分析ジョブ を選択しますreviews-sentiment-analysis。
- [出力] で、[出力データの場所] の横に表示されるリンクを選択します。これによりS3 バケットのoutput.tar.gzアーカイブにリダイレクトされます。
- [概要] タブで、[ダウンロード] を選択します。
- コンピュータで、アーカイブの名前を に変更しますsentiment-output.tar.gz。すべての出力ファイルの名前は同じであるため、感情とエンティティファイルを追跡するのに役立ちます。
- ステップ 1-4 を繰り返してreviews-entities-analysis、ジョブの出力を見つけてダウンロードします。コンピュータで、アーカイブの名前を に変更しますentities-output.tar.gz。
出力ファイルを抽出する
Amazon Comprehend の結果にアクセスする前に、感情とエンティティのアーカイブを解凍します。ローカルファイルシステムまたはターミナルを使用して、アーカイブを解凍できます。
出力ファイル (GUI ファイルシステム) の抽出
macOS を使用している場合は、GUI ファイルシステムでアーカイブをダブルクリックして、アーカイブから出力ファイルを抽出します。
Windows を使用している場合は7-Zip などのサードパーティー製のツールを使用して、GUI ファイルシステムで出力ファイルを抽出できます。Windows では、アーカイブ内の出力ファイルにアクセスするには 2つのステップを実行する必要があります。まずアーカイブを解凍し、次にアーカイブを展開します。
出力ファイルを区別するために、感情ファイルをsentiment-outputとして名前を変更します
これで感情分析をした結果を得ることができます。
最後にサンプルデータとその分析結果を掲載します。
サンプルデータ:
分析結果:
分析結果を可視化する方法はチュートリアルをご参考ください。
ありがとうございました。