AIDXナレッジ - INSIGHT LAB

Amazon Comprehendを使ってみた

作成者: Budo Ogimoto|2023年6月22日

Amazon Comprehendとは

本記事では、Amazon Comprehendについて紹介していきます。
Amazon Comprehendとは、AWSで展開している自然言語解析ツールになります。
できる事としては、以下の機能を持ってます。(今回は日本語対応できている機能のみ使います。)

  • 言語判定
    入力された文章の言語判定が行えます。
    返される値としては、言語コードとそのコード判定の信頼値(Confidence)です。
  • Entity抽出
    入力された文章内の単語を抽出して、その単語の意味(人名・地名...etc)を解析可能です。
    返される値としては、抽出した単語とその意味を表すカテゴリとその信頼値です。
  • Key phrases抽出
    入力された文章内のポイントとなるフレーズを抽出します。
    返される値としては、抽出したフレーズとその信頼値です。
  • Sentiment推論
    入力された文章の感情を推論します。
    その分類としてはPositive(前向き)、Negative(後ろ向き)、Neutral(中間)、Mixed(混合)の四種類に分類されます。
    返される値としては、推論した分類と四種類の分類の確率値です。

使い方としては以下のような利用方法があります。

  • Real-time analysis
    AWSのコンソールからアクセス可能、UIがついており文章入力欄に文章を入力することで解析結果を確認する事が可能。
    とりあえず、どんなものか確認するには最適と思います。
  • Analysis job
    AWS S3と連携させることで指定のバケットに保存してある文章を解析させることができます。
    AWSコンソールからAmazon ComprehendにアクセスしてAnalysis Job欄からCreate JobでJobを作成する事ができます。
  • API Call
    IAMでAmazon Comprehendのフルコントロールを付与したユーザーを作成してAPI(boto3)から文章を解析させる事もできます。
    Python等のプログラムで実行する際に利用できるかと思います。

今回は、API CallでTwitterから入手した文章を各機能で解析していきたいと思います。

解析用スクリプト

さて、今回はTwitter APIも利用して文章の入手から解析結果を得られるまでのスクリプトを作成します。
スクリプトは以下の通りです。

今回利用する文章は、私が最近ハマっているVtuberの生配信時のファンが投稿した文章をターゲットとします。
また、ある程度の結果が見えるように入手したTweetの中でも最長文の3つに絞ってます。

次項からはそれぞれの機能別の解析結果を出力してみます。

言語判定機能

言語判定結果を出力してみます。
Twitter APIの段階で日本語に限定しているのですが、念のため。。。
以下出力スクリプトとその結果です。

見事に日本語だと認識できている様です。

Entity抽出機能

続いて、Entity抽出の結果を出力してみます。
以下出力スクリプトとその結果です。

結果としては、全体的に信頼値が低くなっていると思います。
原因としては文自体が短文なのと感想ツイートなのであまり固有表現を使ってないと考えられます。

Key phrases抽出機能

次にKey phrase抽出の結果を出力します。
以下出力スクリプトとその結果です。

target_textと結果を見比べてみると文章の話題になっているフレーズが抽出できていると思います。

Sentiment推論機能

最後に文章の感情を推論したSentiment推論の結果を出力したいと思います。
以下出力スクリプトとその結果です。

配信の感想ツイートだけあって3つともポジティブな判定をされています。

まとめ

今回はAmazon Comprehendを使って文章を解析してみました。
これまでは、複数のツールを組み合わせて膨大な準備が必要なタスクが一つのツールで完結している事を考えると便利な時代になったと思います。
また、一方で案件で利用するには課金体系を把握し、コストとの相談が必要なので(かつ既にAWS導入済みである事からも)導入できる企業はある程度限られるかなと思います。