本コンテンツはAWS上でシステム開発経験のある方を対象としています。Amazon Comprehendの機能をAPI経由で呼び出し、テキストデータの分析を行います。APIを呼び出す環境としてAmazon SageMaker Notebookインスタンス、開発言語はPythonを利用します。Amazon SageMaker、Jupyter Notebook、Python自体の説明については本コンテンツの対象外となります。また、今回はPythonを利用しますが、本コンテンツで実行している処理はAWS CLIや、他の開発言語でも実行可能です。
review_text ='ハワイアンの心和む音楽の中、ちょっとシリアスなドラマが展開していきます。音楽の力ってすごいな、って思いました。'
# Entity抽出
result = client.detect_entities(Text=review_text, LanguageCode='ja')
entities = result['Entities']
for entity in entities:
print('Entity', entity)
# Entity {'Score': 0.9531810283660889, 'Type': 'OTHER', 'Text': 'ハワイアン', 'BeginOffset': 0, 'EndOffset': 5}
# KeyPhrase抽出
result = client.detect_key_phrases(Text=review_text, LanguageCode='ja')
keyPhrases = result['KeyPhrases']
for keyPhrase in keyPhrases:
print('KeyPhrase', keyPhrase)
# KeyPhrase {'Score': 0.9969016909599304, 'Text': 'ハワイアンの心', 'BeginOffset': 0, 'EndOffset': 7}
# KeyPhrase {'Score': 0.9962161183357239, 'Text': '音楽の中', 'BeginOffset': 9, 'EndOffset': 13}
# KeyPhrase {'Score': 0.9926095604896545, 'Text': 'ドラマ', 'BeginOffset': 23, 'EndOffset': 26}
# KeyPhrase {'Score': 0.9999393820762634, 'Text': '音楽の力', 'BeginOffset': 36, 'EndOffset': 40}
# Sentiment分析
result = client.detect_sentiment(Text=review_text, LanguageCode='ja')
sentimentScores = result['SentimentScore']
for sentiment in sentimentScores:
print(sentiment, sentimentScores[sentiment])
# Positive 0.9588087201118469
# Negative 0.0004567811847664416
# Neutral 0.040275391191244125
# Mixed 0.0004591413598973304
まずはAWSマネジメントコンソールを開きます。
ブラウザから https://console.aws.amazon.com/ にアクセスし、マネジメントコンソールにログインしてください。
最初にAmazon SageMakerのノートブックインスタンスの作成を行います。
ノートブックインスタンスは起動中は課金対象となりますので、終了後に停止・削除してください。
マネジメントコンソールが表示されたら、「サービスを検索する」の部分のテキストボックスに sagemakerと入力し、ドロップダウンにAmazon SageMaker
と表示されたら、クリックします。
アクセス許可と暗号化 のセクションでは、IAMロールのドロップダウンから「新しいロールの作成」を選択します。
「成功! IAMロールを作成しました」の下のIAMロール名のリンクをクリックします。
作成したIAMロールの管理画面が表示されます。
- ここからは作成したIAMロールに対して、チュートリアルに必要な権限設定を行います。ここでは実施を簡単にするためにSageMakerの実行ロールに対して必要な権限を与えていきますが、実運用時には必要最小限の権限を持つIAMロールを作成して利用するようにしてください。
下記のポリシーを入力します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"iam:PassedToService": "comprehend.amazonaws.com"
}
}
}
]
}
任意のポリシー名を入力し「ポリシーの作成」をクリック後、作成したポリシーをアタッチします。
入力済の値がありますが、下記の内容で上書きし、「信頼ポリシーの更新」をクリックします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "sagemaker.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"Service": "comprehend.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
Amazon SageMakerのノートブックインスタンス作成画面に戻り、「ノートブックインスタンス作成」をクリックします。
ステータスが InService
になったら「Jupyter を開く」をクリックします
Jupyter Notebookの画面が開きます。
Jupyter Notebookの画面の「Upload」をクリックし、AmazonComprehend-Text-Analysis.ipynb
をアップロードします(このリポジトリをクローンするでも構いません)。
AmazonComprehend-Text-Analysis.ipynb
のリンクをクリックして、ノートブックを開きます。