Amazon Comprehendでエンティティごとの感情分析が出来るようになりました

2022.03.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

Amazon Comprehendではテキストの感情分析を行うことが出来ます。
これまでは文章ごとに分析結果を取得することが出来ましたが、今回新たにエンティティごとに感情分析が出来るようになりました。

利用方法と、どういったシーンで活用できるのか確認してみました。

Comprenhendの感情分析機能

まずはシンプルな感情分析機能をおさらいしたいと思います。
以下は公式ドキュメントの例文です。

My burger was good, and it was warm. The burger had plenty of toppings.

こちら、Amazon Translateで日本語へ翻訳してみます。

私のハンバーガーはおいしかったし、暖かかった。そのハンバーガーにはトッピングがたっぷり入っていた。

だいぶ褒めてますね。非常にポジティブです。
これをComprehendで感情分析すると以下のような結果が得られます。

{
    "File": "hoge2.txt",
    "Line": 1,
    "Sentiment": "POSITIVE",
    "SentimentScore": {
        "Mixed": 5.478005550685339e-05,
        "Negative": 0.00017103712889365852,
        "Neutral": 0.0009961093310266733,
        "Positive": 0.9987780451774597
    }
}

「この文章はポジティブですね」という分析結果が得られます。
シンプルな感情分析であればこんな感じです。

では、以下のように混在した文章の場合はどうなるでしょうか。

  • The burger was very flavorful and the burger bun was excellent. However, customer service was slow.(ハンバーガーはとても風味豊かで、ハンバーガーパンは素晴らしかったです。しかし、顧客サービスは遅かった。)

文章ごとに感情分析する機能なのでSentimentMIXEDとして判定されます。
SentimentScoreを確認することで、感情ごとのスコアを確認することが出来ます。

{
    "File": "hoge2.txt",
    "Line": 0,
    "Sentiment": "MIXED",
    "SentimentScore": {
        "Mixed": 0.9993553757667542,
        "Negative": 0.00019051041454076767,
        "Neutral": 2.0056895664311014e-05,
        "Positive": 0.00043406806071288884
    }
}

エンティティベースの感情分析

今回のアップデートされた機能では、文章の中からエンティティを抽出し、エンティティごとの感情分析をすることが出来ます。
先程の2つの文章のそれぞれの分析結果は以下のようになります。

The burger was very flavorful and the burger bun was excellent. However, customer service was slow.

{
    "Entities": [
        {
            "DescriptiveMentionIndex": [
                0
            ],
            "Mentions": [
                {
                    "BeginOffset": 4,
                    "EndOffset": 10,
                    "Score": 0.999985,
                    "GroupScore": 1.0,
                    "Text": "burger",
                    "Type": "OTHER",
                    "MentionSentiment": {
                        "Sentiment": "POSITIVE",
                        "SentimentScore": {
                            "Mixed": 1e-06,
                            "Negative": 0.0,
                            "Neutral": 0.0,
                            "Positive": 0.999999
                        }
                    }
                }
            ]
        },
        {
            "DescriptiveMentionIndex": [
                0
            ],
            "Mentions": [
                {
                    "BeginOffset": 38,
                    "EndOffset": 48,
                    "Score": 0.995007,
                    "GroupScore": 1.0,
                    "Text": "burger bun",
                    "Type": "OTHER",
                    "MentionSentiment": {
                        "Sentiment": "POSITIVE",
                        "SentimentScore": {
                            "Mixed": 0.0,
                            "Negative": 2e-06,
                            "Neutral": 0.0,
                            "Positive": 0.999997
                        }
                    }
                }
            ]
        },
        {
            "DescriptiveMentionIndex": [
                0
            ],
            "Mentions": [
                {
                    "BeginOffset": 73,
                    "EndOffset": 89,
                    "Score": 0.99999,
                    "GroupScore": 1.0,
                    "Text": "customer service",
                    "Type": "ATTRIBUTE",
                    "MentionSentiment": {
                        "Sentiment": "NEGATIVE",
                        "SentimentScore": {
                            "Mixed": 2.9e-05,
                            "Negative": 0.999955,
                            "Neutral": 6e-06,
                            "Positive": 9e-06
                        }
                    }
                }
            ]
        }
    ],
    "File": "hoge3.txt",
    "Line": 0
}

burgerについて抽出された2つのエンティティがPOSITIVEと判定されていますが、サービスについてNEGATIVEという判定がされています。
従来までMIXEDとして表現された解析結果もエンティティごとに分析されることで詳細な分析内容を把握することが出来るようになりますね。

注意点として、本日時点でエンティティベースの感情分析機能は英語のみ対応しています。
従来から使えている感情分析機能やエンティティ抽出機能は日本語も対応しています。

さいごに

本日はComprehendの新しい感情分析機能を触ってみました。
従来のようにMIXEDでまとめられるとより詳細な分析が必要だったと思いますが、エンティティごとに分析出来るようになると曖昧さがなくなりそうですね。

英語のみですが、エンティティ分析と感情分析はそれぞれ日本語対応されているので、このエンティティごとの感情分析も近いうちに日本語対応してくれるような気がします。