Amazon Comprehend

## 内容
・本記事の目標
・使用するサービス
・参考サイト
・ハンズオン開始
・リソースの削除
・さいごに

## 本記事の目標
人工知能・機械学習について理解することや、専門知識の向上、実際の業務に役立てることができればと考え、ハンズオンを行います。

## 使用するサービス
Amazon Comprehend
全般の詳しい説明は次の公式サイトを是非参考にされてください。
https://docs.aws.amazon.com/comprehend/latest/dg/how-it-works.html
本サービスの概要としては、テキストから主要言語の識別、人物や場所などの情報（「エンティティ」）の検出、キーフレーズの検出、感情分析、トピックモデリング、個人識別情報（PII）の検出、構文解析（形態素解析）などが可能となるもの。

超簡単にまとめると、個人情報の検出のみならず、顧客の感情分析、キーフレーズの検出などを行うことでコンテンツのカスタマイズに役立てることができるものと解釈しちゃいます。

## 参考サイト

https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-AIML-2022-confirmation_003.html

## ハンズオン開始
オレンジのボタンから開始です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/32dd7784-7989-5bfd-786f-84ec226cc4cd.png)

### 赤枠からリアルタイムに文字から分析をしていきます。
最初はデフォルトで文字が入っていますので、削除してから任意の文字を入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/ef488e5a-b78a-5709-5fc7-73fc032f0b59.png)

早速使っています。
ネットで新聞と検索した結果、ロケット打ち上げ失敗の記事を発見したので冒頭を拝借。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/27868616-b380-e9be-b534-e8ab4b3cc2ed.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/560da57a-dcf4-e87f-f1b1-6b49c75910b4.png)
やはりネガティブが反応しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/22683ef1-926a-62da-3a0f-2a872d5b293e.png)

次は、番組表をネットで検索し、短い文章で惹きつける技術をどう分析するか確認してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/be148c70-0573-f5ac-0947-1949de5f62b8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/7d21771e-9d55-d942-8923-daa8dc83912a.png)
感情論は無いに等しいが、若干ポジティブに記載されいる。といったところでしょうか。


### job形式で分析・検出などを行っていきます。
S3を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/9d8d7c43-b621-6a8d-1e72-a84314d25464.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/0fadec3e-7e68-ccde-d78b-168b998b38f9.png)

公式さんが準備したテキストデータをS3にアップロードしていきます。
S3の画面で、作成したバケットの名前をクリックし、オレンジ色のボタンからアップロードしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/b3f9d949-ed5e-5671-ce06-04f49f08de69.png)

次にjobを作成していく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/bfd0a074-9c04-39d8-da87-6a84439acd4e.png)

ここで、個人情報検索（PII）などが選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/bbd7e30c-4bfd-c8f4-6d87-76fe4a0d2d8c.png)


インプットは、先程アプロードしたテキストデータを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/ce011fe3-b236-93c4-08c1-a437b9351f2b.png)

一行ごとの分析を行いたいので、「One document per line」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/49323b59-be6e-265e-c99f-899a09b09d1f.png)

アウトプット先も先程作成したS3バケットを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/131a0118-5f71-e1f1-3d8c-b1c109b409f0.png)

IAMロールを新たに作成します。
インプットとアウトプット両方同じバケットなので画像のとおり選択して、サインを行って次にいきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/0f84b1cf-dfb1-6dcf-63eb-a327ea6f7ee8.png)

６分ほど待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/625856fa-d3d3-686d-db9f-5c79217c8ae4.png)

S3にアウトプットされたものを確認してみます。
赤枠のjob名をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/022d1476-af17-720f-1762-9aee5fbb2b86.png)

スクロールしてロケーションをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/8dab9d1a-fe7a-40fc-b47f-9fd15417b7c6.png)

赤枠をクリックし、S3からダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/07d19708-3316-4869-aa77-387492c4de8c.png)


分析されたデータがダウンロードできました。これをテキストエディタを使用して見てみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/dfdc3468-8433-7453-2937-7c2129cd8268.png)
line0,line1があり、それぞれ数値で出力されていると思います。
分析した言葉は、公式さんが準備した次の文章になります。
>「IAM ロール画面に遷移するので、こちらの「ポリシーをアタッチします」ボタンをクリックしてください。IAM ロールには複数の IAM ポリシーをアタッチすることができるので、Amazon Comprehend の機能を利用するためのポリシーをアタッチしていきます。(なお、IAM に関するハンズオン も用意しておりますので、あわせてご覧いただければと思います。)
サーバーレスが好きなテクニカルソリューションアーキテクト。業種業界問わず、お客様のプロダクト開発をサポートさせていただいています。「AWS Hands-on for Beginners」というオンデマンドで視聴できるハンズオンも企画・推進しており、楽しく学べるコンテンツを日々考えています。好きなサービスは AWS Lambda と AWS Amplify で、好きな休日の過ごし方は娘ふたりと川の字になって昼寝です
」

こちらの分析結果が先程の数値となって出力されたのです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/d5e03c35-23d4-f3aa-2605-abbe9a90548d.png)
"Sentiment"の値なども、説明文に近いのでナチュラルと判断されていますね。

試しに、過去に記事にした一部を切り取って感情分析してみたいと思います。
複雑な感情で書いた記事をどの様に分析してくれるのでしょうか。
>２０２３年８月、１７年継続して勤務した元職場の上司、また同僚の方々から退職を承認してもらった以降、エンジニアを本気で志しました。（当時３５歳）
９月以降、本当に尊敬できる社長のもと、システムエンジニアとして就業させていただき、成長させていただきました。お叱りを受けたことも、、、己の未熟さを痛感しました。少しでも貢献できましたでしょうか。。。
そして、２０２４年３月転職。目標としていた領域を専門的に業務を行うことができる運びとなりました。
はっきりと申し上げまして、私一人でここまで来れたとは思っていません。本当はお名前を出してお礼を言いたいですが、この感謝の気持ちと、私のたった一つの取柄、「努力」を発揮して、全集中で取り組み結果を出して恩返しさせていただければと考えております。これまで以上にアウトプットを中心として学習し、徹底的に右脳を鍛え上げます！！！
早速手を動かしていきます。

このtextデータをS3にアップロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/a4b5e4e1-27d6-68b8-9205-cc08c0e1d9ef.png)

あっという間に作成完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/71d45fad-024e-e5ca-0003-7a73f9619b86.png)

S3からダウンロードして分析結果を確認します。
今回は、１行ずつの分析ではなく、一つの文章として分析した結果、「natural」と判断されたようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/972228b8-7c64-3ae6-58dd-b6c8fec49a60.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/95f7d31d-57f7-f61c-209d-880a0ad5a520.png)

## リソースの削除
S3バケットの削除
先にバケットを空にし、バケットを削除します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3518951/b4ab1fa5-d291-bac5-4823-172ea4875901.png)
なお、Amazon Comprehendは実行した文字数によって課金される仕組みなので、Analysis jobsを削除する必要はありません。


## さいごに
このように顧客や、時には患者さんの感情分析することで、コンテンツなどの改良に役立てることができそうです。
予め機械学習によって蓄えられたデータから分析する方法や、自分のデータセットを用いてモデルをトレーニングすることが可能なようです。
とても勉強になりました。

では！