研究開発

旅行業界を取り巻く様々な環境変化にお客様が対応できるよう、
最新デジタルテクノロジーを活用した研究開発の取り組みや成果をご紹介します。
研究開発
クラウドサービスを使ったサンプルモデル 第3回 「AIでテキストの感情を評価する」

 

初めに

この記事は、AWSのサービスを使って「クラウドサービス」「サーバレスアーキテクチャ」「AIサービス」などについて、実際に手を動かして実感をつかみながらプロセスや解説を記事として公開していこう、という連載企画です。

作ろうとしているのは「文章の感情評価AIシステム」です。

 

>>第1回記事はこちら。

https://www.next-v.com/Blog/Detail/62016
第1回では「クラウドサービス」「サーバレスアーキテクチャ」の概要説明とともに、
これらを織り込んだサンプルサービスの概要を記載いたしました。

 

>>第2回記事はこちら。

https://www.next-v.com/Blog/Detail/65016

第2回では、WEBの入り口として「Amazon S3に静的ページをホストする」をテーマに、
サーバレスにWEBページを公開する方法について記載いたしました。


「第3回のテーマ」はAIで感情評価

今回も実際にAWSサービスを使用しながら、サンプルサービスのパーツを作っていきます。

シリーズ第3回目のメインテーマは「Amazon Comprehendでテキストの感情評価結果を取得する」です。

 

どの部分

サンプルシステムを機能ごとにおおまかに以下のように分解します。

  • 利用者の操作画面表示
  • テキストのアップロード
  • テキストの解析
  • 解析結果の出力
  • 解析結果の画面表示

今回のテーマは「テキストの解析」の部分になります。

 

 

テキストを受け取ってAIサービスが判定する「Amazon Comprehend」

今回のサンプルシステムの核になる部分ともいえる、AI判定サービス「Amazon Comprehend」がテーマとなります。

 

Amazon Comprehendとは

Amazon Comprehendは、文章や言葉から重要な情報を自動で見つけ出す技術(NLP機能)と、面倒な設定が一切不要なシステム(サーバレスアーキテクチャ)を組み合わせ、ビジネスでの文章分析を手軽かつ効率的なものに変えるツールです。

Amazon Comprehendの特徴

サーバレスアーキテクチャの採用により、以下のような特徴や優位性があります。

 

  • 拡張性:分析したい文章の量がどれだけ増えても、自動で対応してくれるので、いつでもスムーズに使えます。
  • コスト効率:使った分だけ料金がかかるので、使用しない時間があっても余計なお金を払う必要はありません。
  • 構築スピード: サーバやソフトウェアの難しい設定は一切不要で、数回クリックするだけで、すぐに文章分析を始められます。

 

Amazon Comprehendの利便性

Amazon Comprehendを使うと、難しいプログラミングなしで、以下のように文章を色々な方法で調べることができます。

 

  • 「気持ち」を分析する: 商品のレビューやSNSの書き込みを見て、人々がどんな「気持ち」でいるかを見つけ出せます。
  • 大事な情報を見つける: 誰の話なのか、どこでのことか、いつの話かなど、文章から重要な情報をピックアップして整理できます。
  • 言葉を識別する: 書かれている言語を自動で判別し、さまざまな言語の文章を管理しやすくします。

 

このようにAmazon Comprehendの使い道は多岐にわたり、旅行業界においても大きなメリットを提供できます。
例えば、顧客からのレビューや質問を自動で分析し、迅速に対応するための深い理解を得たり、旅行トレンドや目的地に関するソーシャルメディアの話題をリアルタイムで把握し、人々が何に興味を持っているのかを理解することで、より魅力的な旅行プランの提案やマーケティング戦略の最適化を行うなどの活用が見込まれます。

 

Amazon Comprehendの実践

テキストデータを受け取って、感情分析データがログに出力されるところまで順を追って実践していきます。

 

サンプル環境の概要

Amazon S3にテキストファイルを置くと、自動的にAmazon Comprehendがテキストを分析し、結果をログとして出力する環境を作ります。

 

以下の5ステップで動作する環境を作ります。

1.「分析テキスト INPUT用 Amazon S3バケット」に評価したいテキストをアップロード
2.Amazon S3のファイルアップロードをトリガーにAWS LambdaからAmazon Comprehendを実行
3.Amazon Comprehendがテキスト内容をAIで感情評価し、結果をLambdaへ返す。
4.Amazon Comprehendから返された評価結果を、「分析結果 OUT PUT用 Amazon S3バケット」へ送付
5. 「分析結果 OUTPUT用 Amazon S3バケット」から分析結果ファイルをダウンロード

 

  • サンプル環境の図

 

  • サンプル環境処理図(➀テキストアップロード~Amazon Comprehend実行)

 

サンプル環境処理図(③AI評価分析実行~⑤分析結果のダウンロード)

 

AWS Lambdaとは

サンプル環境構築の前に、AWS Lambdaがどのようなサービスで、どういった利便性があるのかを説明いたします。


AWS Lambdaは、Amazon Web Services(AWS)が提供するサービスの一つで、コンピュータプログラムを実行するためのプラットフォーム(実行環境)です。

 

AWS Lambdaの特徴

AWS Lambdaの特徴は「サーバレス実行環境」である、という点です。

 

サーバレス実行環境

「サーバレス」とは、簡単に言えば、プログラムを実行したいときに、その裏側で動く「サーバ」というコンピューターの存在を気にする必要がないということです。
通常、プログラムを動かすためには、サーバの設定や管理が必要ですが、Lambdaではそれが全く必要ありません。

 

AWS Lambdaの優位性と利便性

Lambdaの最大の魅力は、その手軽さにあります。
プログラムを「アップロード」するだけで、後はAWSが自動で管理してくれます。
プログラムが必要なときにだけ動き、使用した分だけ料金がかかるため、コストも抑えられます。
 

また、プログラムがどれだけ大きな仕事をしても、AWSが自動で対応してくれるため、性能について心配する必要もありません。

 

例えば、今回のような処理環境を作る場合にも、サーバの構築から始めて、プログラム実行のためのミドルウェアをインストールして、ネットワークの接続を用意して・・・といったインフラ構築の知識や手間が不要で、使いたいときに使用して、不要になったら削除できる、という点で高い利便性があると言えます。


処理環境の構築

それでは、実際にサンプル実行環境を作っていきます。

 

1.「分析テキスト INPUT用 Amazon S3バケット」

INPUT用のAmazon S3を用意します。

今回はサンプル用なので外部公開はせず、同じアカウント内からのアクセスのみとします。
 
コンソール画面からAmazon S3バケットを新規作成します。


今回はテキストアップロード用のバケットと、分析結果ダウンロード用のバケットを作りますので、
バケット名でどちらかわかるようにinputと入れておくとわかりやすいです。
(画像のバケット名はダミーです)

 

2.「分析結果 OUTPUT用 Amazon S3バケット」

先ほど作成したINPUT用と同様に作成し、名称にoutputと入れておきます。

 

 

3.Amazon Comprehendを実行するAWS Lambda

AWS Lambdaの設定を行います。
Lambdaのコンソール画面から関数作成を行います。


Pythonコードを実行しますので、Pythonを選択しておきます。


 
 
関数画面で、トリガーを追加します。

トリガー追加ボタンから、S3を選択します。 

 
先ほど作成したバケットを選択しておきます。

イベントタイプはPUTを選択します。
 これで、選択したバケットにファイルがアップロードされると自動でこのLambda関数が実行されるようになります。

4.実行するプログラムを作成

バケットにファイルがアップロードされた際に実行されるプログラムを登録します。
 

Lambda関数のコード入力欄にプログラムを記載します。


今回のコード(lambda_function.py)も掲示しておきます。


コードの中にOUTPUT用のバケット名を記載します。
(サンプルコードの中では「xxxx.output」となっている箇所。)
 
これで、INPUTバケットにアップロードされたテキストファイルをAmazon Comprehendへ送り、
戻ってきた評価結果をOUTPUTバケットへ格納する処理ができました。

 

AI評価のテスト

では実際に動かして、評価結果を取得してみたいと思います。

 

評価テストのテキスト

テスト用テキストとして、インターネット上にある評価コメント、いわゆる「口コミ」を使ってみます。

 

口コミ1はグルメサイトで好意的な評価をしているコメントを例にしています。

 

口コミ2はEC2サイトで商品レビュー星1つのコメントを例にしてみました。

 

口コミ1の評価

INPUT用バケットにテスト用のファイルをアップロードします。

アップロードされました。

 

ログを確認すると同時刻にLambdaからAmazon Comprehendが実行されたことが分かります。

 

 

結果ファイルがOUTPUTバケットに出力されていることを確認します。

最終更新日時がINPUTバケット、Lambda実行時間と近しいことから、今回の処理で作成されたことがわかります。

 

結果ファイルの中身は以下のようになっています。

今回はサンプル環境なので、評価結果をJSON形式でテキストデータとして出力しているためです。

 

結果確認

ダウンロードした結果ファイルのJSONテキストを、項目ごとに(今回は手作業で)並べてみました。

 

口コミ1

全体評価はPOSITIVEで、要素ごとには
 

  • Positiveが99.86%
  • Negativeが0.05%
  • Neutralが0.08%
  • Mixedが0.07%

 

人が読みとった文章の印象とかなり近い結果だと思います。

 

口コミ2の評価

口コミ2のほうも先ほどと同様に、ファイルをアップロードして結果をダウンロードします。

全体評価はMIXED
 

  • Positiveが2.77%
  • Negativeが0.79%
  • Neutralが0.07%
  • Mixedが96.35%

 

Amazon Comprehendはこのレビューを、良い感情ではないと判断しているものの、完全な悪い感情ではなく、混在していると判断したようです。

 

確かに文章の前半で、「機能として十分」「大きさは許容範囲」といった好印象の言葉があります。

このあたりは、人が受ける印象だと、文章の後ろの方を重視する傾向がありますが、そういった修辞的な印象操作を取り払った感情評価ができているといえるかもしれません。

 

まとめ

今回は、簡易的なサンプル環境としてファイルを直接Amazon S3に配置し、分析結果もJSON形式のデータのままで確認するところまでとなります。

 

次回からは、第2回で作成した「ユーザーインターフェースとしての静的ページ」と今回の「分析処理」をつなげて、テキストファイルの登録から分析結果表示までWEB画面で操作できるように、さらに仕組みを追加していきます。

 

それでは次回の連載をお楽しみに。