2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

AWS Comprehend のリアル分析(Real-time analysis)と分析ジョブ(Analysis jobs)を試してみた

Posted at

はじめに

Amazon Comprehend で感情分析などが行えるということで試してみました。

料金

以下のページを参照してください。

無料利用枠もあるみたいです。

特徴

Amazon Comprehend でどういったことが行えるかは以下のページに記載されています。

分析手法

AWS マネジメントコンソールから行えるのは以下の2つになります。

  • リアルタイム分析 (Real-time analysis): データを直接入力して分析する方法です。
  • 分析ジョブ (Analysis jobs): 事前に対象データを Amazon S3 へアップロードしておき、ジョブとして実行して分析する方法です。

1-Comprehend02.png

分析

それでは先ほど挙げた2つの分析を試したいと思います。

リアルタイム分析

AWS マネジメントコンソール > Amazon Comprehend > Launch Amazon Comprehend または Real-time analysis をクリックします。

1-Comprehend01.png

1-Comprehend03.png

Input data

Analysis typeBuilt-in を選択します。
もし、事前に Customization でオリジナルモデルを用意していた場合は Custom も選択できます。

また、今回は Input text に入力する内容はデフォルトで入力されている英文を Google 翻訳したものを利用します。

入力まで完了したら [Analyze] をクリックし分析します。

1-Comprehend04.png

Insight

分析が完了すると Insight に分析結果が表示されます。
Insight は以下の項目について分析を行います。

項目 内容 サポート言語
Entities(エンティティ) ドキュメントで特定されたエンティティ(人、位置、場所など)のリストを返します。 サポートされているすべての言語
Key phrases(キーフレーズ) ドキュメントに含まれるキーフレーズを抽出します。 サポートされているすべての言語
Language(主要言語) ドキュメント内の主要言語を特定します。100 の言語を識別できます。 こちら を参照
PII(個人識別情報) 英語とスペイン語
Sentiment(感情) ドキュメントの主要センチメントを判断します。センチメントは、ポジティブのこともあれば、中立やネガティブ、あるいはそれらが混在することもあります。 サポートされているすべての言語
Targeted sentiment(ターゲット感情) ドキュメントに記載されている特定のエンティティのセンチメントを特定します。センチメントは、ポジティブのこともあれば、中立やネガティブ、あるいはそれらが混在することもあります。 英語
Syntax(構文分析) ドキュメント内の各単語を解析し、その単語の品詞を特定します。 ドイツ語 (de)、英語 (en)、スペイン語 (es)、フランス語 (fr)、イタリア語 (it)、ポルトガル語 (pt)

Entities(エンティティ)

人や場所、商品などの固有な名前をテキストだけでなく、日付や数量などの値についても識別して表します。

1-Comprehend05-1.png
1-Comprehend05-2.png

各エンティティには、エンティティタイプが正しく検出されたという信頼レベルを示すスコアも含まれます。
以下はエンティティタイプ一覧です。

説明
COMMERCIAL_ITEM ブランド製品
DATE 日付 (11/25/2017 など)、曜日 (Tuesday)、月 (May)、または時刻 (8:30 a.m.)
EVENT フェスティバル、コンサート、選挙などのイベント
LOCATION 国、都市、湖、建物などの特定の場所
ORGANIZATION 政府、企業、宗教、スポーツチームなどの大規模な組織
OTHER 他のどのエンティティカテゴリにも当てはまらないエンティティ
PERSON 個人、グループ、ニックネーム、架空の人物
QUANTITY 通貨、パーセント、数値、バイト数などの数量
TITLE 映画、本、歌など、あらゆる作品や創作作品に付けられた正式名称

Key phrases(キーフレーズ)

特定のことを説明する名詞句を含む文字列です。
各キーフレーズには、文字列が名詞句であるという信頼度を示すスコアが含まれます。
また、キーフレーズの検出はサポートする言語が何であっても実行できますが、ドキュメントの言語は統一する必要があります。

1-Comprehend06-1.png
1-Comprehend06-2.png

Language(主要言語)

入力したテキストで用いられている主要言語を RFC 5646 の識別子を使用して識別します。
本などの長い文書に複数の言語が含まれている場合は、細かく分割して個々の部分に対して識別します。
その結果を集計して長い文書に含まれる各言語の割合を判断できます。

1-Comprehend07.png

PII(個人識別情報)

住所や銀行口座、電話番号といった個人を特定するために使用できる個人データをテキストで参照したものです。

1-Comprehend08-1.png

この項目は、まだ(2024/7時点)日本語に対応していないため以下には英語での結果を載せておきます。

1-Comprehend08-2.png

Sentiment(感情)

UTF-8 エンコードしたテキストドキュメントの内容の感情を判定できます。

1-Comprehend09-1.png

テキストに対する感情判定は以下です。

  • Newtral(ニュートラル)- 肯定的と否定的のどちらでもない
  • Positive(肯定的)- 全体的に肯定的
  • Negative(否定的)- 全体的に否定的
  • Mixed(混在)- 肯定的と否定的の両方

Targeted sentiment(ターゲット感情)

入力ドキュメント内で特定のエンティティに関連付けられた感情を把握できます。
「感情」との違いは出力データの粒度レベルになり、「感情分析」は全体的な感情で「ターゲット感情分析」はより具体的なエンティティに対しての感情判断を行います。

1-Comprehend10-1.png

この項目もまだ(2024/7時点)日本語には非対応のため英語の結果を載せておきます。

1-Comprehend10-2.png

Syntax(構文分析)

ドキュメント内の各単語の品詞(名刺、動詞、形容詞など)または構文関数を返します。

1-Comprehend11-1.png

この項目もまだ(2024/7時点)日本語には非対応のため英語の結果を載せておきます。

1-Comprehend11-2.png

分析ジョブ(Analysis jobs)

Amazon S3 に保存されているドキュメントに対し、AWS Comprehend をジョブとして実行し分析する方法です。

事前準備

まずは事前にドキュメントを保存するS3バケットの作成します。
作成したら以下のようにディレクトリを作成します。

2-Comprehend07.png

作成したら先ほど「リアル分析」で入力した内容をテキストに保存しアップロードします。

2-Comprehend-s3.png

以上で準備は完了なのでジョブの実行へと移ります。

ジョブの実行

AWS マネジメントコンソール > Amazon Comprehend > Launch Amazon Comprehend または Real-time analysis をクリックします。

2-Comprehend01.png

まず、Job settings の設定を行います。
ここでの Name はジョブ名にあたるので任意の値を入力してください。
Analysis typeSentiment を選択し、LanguageJapanese を選択します。

2-Comprehend02.png

次の Input data では分析したいデータの入力元の設定を行います。
S3 location に先ほどアップロードした分析対象のデータのパス(今回は s3://comprehend-test20240707/input )を指定します。
また、ファイルごとに分析したいため Input formatOne document per file を指定します。

Output data では分析結果データの出力先を指定します。
今回は S3 locations3://comprehend-test20240707/output を指定します。

2-Comprehend03.png

Access permissions では実行するための IAM ロール の設定を行います。
今回は事前に IAM ロールの用意はしてないため、新規で作成します。
IAM roleCreate an IAM role を選択し、Permissions to accessInput and Output S3 buckets を選択します。
また、Name suffix には test を入力します。

この設定内容で Input DataOutput Data で指定したバケットへのアクセス権を持った AmazonComprehendServiceRole-test という IAM ロールが作成されます。

2-Comprehend-IAM.png

以上の入力が完了したら [Create job] をクリックして完了です。

2-Comprehend04.png

Analysis jobs の画面でステータスの確認ができます。
In progressCompreted となれば分析完了です。

2-Comprehend05.png

ジョブをクリックして詳細を確認します。
StartEnd を確認すると、今回のジョブの実行に約6分かかったということがわかります。

2-Comprehend06.png

それでは分析結果を確認したいと思います。
バケットの output ディレクトリ配下を見ると output.tar.gz というのがありました。

2-Comprehend08.png

これをダウンロードし、確認したところ以下の内容が記載されていました。

output
{"File": "sample.txt", "Sentiment": "NEUTRAL", "SentimentScore": {"Mixed": 8.555363820050843e-06, "Negative": 0.00015624803199898452, "Neutral": 0.9996223449707031, "Positive": 0.00021284697868395597}}

内容は リアル分析 と同じですが、こっちの方が小数点以下の桁が多いためより詳細な値が確認できそうです。

片付け

今回は Amazon Comprehend で利用したジョブに対しては削除などはできませんでした。
おそらくジョブが存在していても課金対象ではないからだと思います。
そのため、S3バケットのみ削除すれば完了です。

おわりに

今回はコンソールから操作できる リアルタイム分析分析ジョブ を試してみました。
他にも AWS CLIAWS SDK で利用できる 毒性検出 などもあるので試してみたいと思います。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?