Amazon Comprehend と考える「カラオケ選曲の重要性」

（この記事は、私の強い主観が含まれる可能性がありますので、慎重にお読みください。）

## 概要

AWS の自然言語処理サービス [Amazon Comprehend](https://aws.amazon.com/jp/comprehend/) を使って、あんな曲こんな曲の歌詞を解析してみようのコーナーです。

## まえがき

みなさんは、カラオケに行ったとき、どのような曲を選曲しますか？
アップテンポな曲、演歌、アイドルの曲、ボーカロイドなどなど・・・様々あると思いますが、

> とりあえず流行りの曲を歌ったら、なんか盛り下がった気がする

こんな経験はありませんか？

私アラサー真っただ中ですが、高校生を過ぎたあたりから、カラオケで画面に出てくる歌詞の意味をなぜか気にするようになってしまいました。
そんな中で気づいたことが一つあります。

> ヒットしている曲の中には、歌詞を聞いて多くの人が「う～、これすごくわかる😭」と感じた結果流行っているものがある

ということです。例えば以下のような・・・？

- 失恋系バラード
- 歌手の方が、亡くなった身内の方？へ向けて書いた曲
- 悲しい気持ちを明るい曲調で誤魔化している曲

そんな曲の歌詞がポジティブ・ネガティブのどっちよりなの？というのを AWS で調査していきたいと思います。

## Amazon Comprehend について

Amazon Comprehend は自然言語処理およびテキスト解析サービスです。
文章を読み込ませると、言語、単語、トピック、文法、個人を特定する情報、感情などの要素を解析することができます。

感情面で言いますと、例えばネットショップの商品レビューで「この商品は悪い」はネガティブと判断しますが、「この商品は悪くはない」はポジティブであると判断してくれます。
また、「悪くはないけど・・・」などと書くとポジティブとネガティブが混在しているという判断をするなど、すごく優秀です。

Amazon Comprehend の使い方はとても簡単で（AWS アカウントを持っている前提で進めます）、
AWS コンソールから Amazon Comprehend の画面へ進み、 Launch Amazon Comprehend をクリック、そして Input text のところに文章を入力して Analyze をクリックするだけで、解析が行われます。

## 解析してみる

それでは流行りの J-POP から何曲か感情の解析をやってみましょう。
著作権の関係上、具体的な歌詞はお伝え出来ませんので、あ～あれだなと想像しながらお読みください。

手元で実際にやる場合は、歌詞を入力し、解析した後、画面下部の Insights から Sentiment タブ -> Application integration -> API response からおおよそ同じ結果が取得できます。
（なぜおおよそかというと、サービス自体も継続的に学習を積み重ねているためです）

### 失恋系バラード

まずは、昔の恋を枯れかけのお花に例えているのが印象的な、優里さんの「ドライフラワー」を解析してみます。

数字が大きいほど、その感情が多く含まれているという解析結果になっています。

| Neutral         | Positive        | Negative        | Mixed           |
| --------------- | --------------- | --------------- | --------------- |
| 0.01 confidence | 0.05 confidence | 0.48 confidence | 0.44 confidence |

```json
{
    "Sentiment": {
        "Sentiment": "NEGATIVE",
        "SentimentScore": {
            "Positive": 0.052503570914268494,
            "Negative": 0.4896421432495117,
            "Neutral": 0.012363538146018982,
            "Mixed": 0.4454907178878784
        }
    }
}
```

ネガティブが最も高く、その次にネガティブとポジティブが混ざっているものが続いています。
ポジティブ要素はあまりありませんでした。

### 歌手の方が、亡くなった身内の方？へ向けて書いた曲

続きまして、米津玄師さんの代表的ナンバーでもあり、唐揚げにかけるとおいしい果物の曲「Lemon」です。

| Neutral         | Positive        | Negative        | Mixed           |
| --------------- | --------------- | --------------- | --------------- |
| 0.05 confidence | 0.85 confidence | 0.06 confidence | 0.03 confidence |

```json
{
    "Sentiment": {
        "Sentiment": "POSITIVE",
        "SentimentScore": {
            "Positive": 0.8550099730491638,
            "Negative": 0.06169990822672844,
            "Neutral": 0.050171393901109695,
            "Mixed": 0.03311875835061073
        }
    }
}
```

なんとこの曲はポジティブな曲らしいです！

このように、人間の感じ方と全く異なる解析結果となることもあるので興味深いですね。

### 悲しい気持ちを明るい曲調で誤魔化している曲

歌っている方は波消しブロックで有名な方なのですが、たまたま私の大学の大先輩（なんと言えばいいか分からない）が出している曲と同じ曲名の曲がありましたので解析してみます。

aiko さんで「キラキラ」です。どうぞ。

| Neutral         | Positive        | Negative        | Mixed           |
| --------------- | --------------- | --------------- | --------------- |
| 0.57 confidence | 0.30 confidence | 0.11 confidence | 0.00 confidence |

```json
{
    "Sentiment": {
        "Sentiment": "NEUTRAL",
        "SentimentScore": {
            "Positive": 0.3010811507701874,
            "Negative": 0.11686765402555466,
            "Neutral": 0.5778478980064392,
            "Mixed": 0.004203263204544783
        }
    }
}
```

ニュートラルですが、解析結果としてはポジティブ寄りなものになりました。
歌詞だけ読むと優しい感じがするからかもしれません。私が深く考えすぎなだけでしょうか・・・

## まとめ

いろいろな歌詞を解析してみて、言葉をそのまま解釈して分析しているというイメージがわきました（当然かもしれませんが）。歌詞に込められた感情を分析するには、歌詞が書かれた状況や歌手の方のバックボーンなども考慮に入れる必要があり、これは人間でも難しいことです。

また、今回歌詞だけの分析にとどまり、曲調などは全く考慮に入れていない点も影響したと考えられます。

機械だけに頼るのはまだまだ先のことなのかもしれません。
しかし、機械を一人の人間ととらえて参考にするのはありだと思います。

この記事を通して、みなさんがカラオケで盛り上げ役となられることを期待しております。
ありがとうございました。