- 感情分析APIのうち何を選んだらいいか分からない
- 感情分析APIの、出力形式・分析結果・コストを比較したい
感情分析APIとは?
ここではテキスト(文章)の感情分析について説明していきます。感情分析とは、ある文章が、AIによって否定的(ネガティブ)なのか肯定的(ポジティブ)なのか、あるいは中立的(ナチュラル)なのかを判定することです。多くの場合は、それぞれの感情(ネガポジ)の度合いをスコアとして表現することが可能です。
例えば「今日の天気は非常に良いです。」という文章を感情分析すると、肯定的なスコアが出るといった仕組みです。
この感情分析の応用例としては、「大量の商品レビュー情報などをスコア化」、「ニュースを瞬時のネガポジ判定」といったものがあります。近年、GoogleやAmazon、Microsoftなど各社が、テキストを入力すれば、簡単に感情スコアが返してくれる「感情分析API」をサービスとして出しています。今回は各社の感情分析APIについて、「感情スコアの形式」・「実際の分析結果」・「料金」などを比較していきます。
感情分析API比較まとめ
GCP (Google) | AWS (Amazon) |
|
---|---|---|
APIサービス名 | Natural Language API | Amazon Comprehend |
感情スコア形式 | ScoreおよびMagnitude | ・Natural ・Positive ・Negative ・Mixed |
料金 | 高い (少なければ無料あり) | 安い |
その他 | ・エンティティ分析 ・構文解析 ・エンティティ感情分析 などもあり | ・キーフレーズ抽出 ・構文解析 ・エンティティ認識 などもあり |
エンティティとは実体のことで、テキストの感情分析においては、「人物」や「場所」などの固有名詞を表すことが多いです。エンティティ感情分析では、「人物」や「場所」などの単語に対してのネガポジ判定ができます。
詳細は後述しますが、それぞれの特徴・おすすめは以下の通りです。
- とにかく無料でやりたい(月に1000文字を5000回まで)
- 文章全体の他、1文ごとの感情分析を行いたい
- エンティティ感情分析も行いたい
- GCPで環境を揃えたい
- 量は多いがとにかく安く抑えたい
- より細かく分析したい(肯定的、否定的、中立的、混在を信頼スコアで)
- AWSで環境を揃えたい
感情スコアの形式について
それぞれ、スコアの表現の仕方に違いがあります。実際に感情分析結果を交えながら紹介していきます。今回は、下記レビューをサンプルとしてそれぞれ感情分析してみます。(Amazon商品レビュー引用)
ちなみにこのレビューは、ちょっとトリッキーですね。購入しようとした商品に対してのクレームは強そうですが、実際に購入した商品に対してはそこまでクレームがないように見受けられます。
サンプル文章
「ラベル無しの炭酸水をいつも頼んでいますが、今回に限り突然配達日が配達当日に2週間延期されるというとんでもない事態になったため、急遽こちらの炭酸水にしました。これは翌日届きました。いったい何が起こって配達日当日に2週間延期になるんでしょうね、この点に関しては本当に腹立たしいですが、この炭酸水はおいしかったしお値段もラベル無しのとほとんど同じ、ラベル無しより炭酸が強い感じです。」
Amazonレビューより
Score(スコア)と呼ばれるネガポジを表す指標と、Magnitude(マグニチュード)と呼ばれる感情の強度を表す指標を出力します。
・score:-1.0(ネガティブ)~1.0(ポジティブ)のスコアで感情が表されます。これは、テキストの全体的な感情の傾向に相当します。
・magnitude:指定したテキストの全体的な感情の強度(ポジティブとネガティブの両方)が 0.0~+inf の値で示されます。score と違って、magnitude は正規化されていないため、テキスト内で感情(ポジティブとネガティブの両方)が表現されるたびにテキストのmagnitude の値が増加します。そのため、長いテキスト ブロックで値が高くなる傾向があります。
Google Cloud
サンプル文章のスコア結果は以下のようになりました。
- Score: -0.1
- Magnitude: 1.1
文章の前半で大きなネガティブ判定をしたものの、文章トータルではScore-0.1と、わりと中立(ニュートラル)な判定となっていますね。ネガティブとポジティブ両方含まれている文章のため、Scoreは中立、Magnitudeは1.1と高めになっています。
また補足ですが、下記画像のようにNatural Language APIでは、1文ずつそれぞれスコア化できるのも利点です。

テキストの全体的な感情(肯定的 Positive, 否定的 Negative, 中立的 Neutral, 混在 Mixed)を出力します。これら4つの感情の信頼スコアを正規化(合計が1となるように)して表現します。
サンプル文章のスコア結果は以下のようになりました。
- Neutral 0.00
- Positive 0.02
- Negative 0.69
- Mixed 0.28
Natural Language API同様、ネガティブもポジティブも混同しているため、Positive, Negative, Mixedもそれぞれ信頼スコアがついていますが、ネガティブ0.69と最も信頼スコアが高くなっています。ただ、信頼スコア0.69というのはそこまで高い数字ではないため、ややネガティブな判定といったところでしょうか。

料金
最後に料金についてまとめてみました。それぞれ公式ページには下記のように表記されていますが、1ユニットあたりの文字数や、料金単位が異なるので、最後に1000文字あたりの概算で比較してみます。
※1000文字=1ユニット、1000ユニットあたりの料金
機能 | 0~5,000 | 5,000~1,000,000 | 1,000,000~5,000,000 | 5,000,000~20,000,000 |
---|---|---|---|---|
エンティティ分析 | 無料 | $1.00 | $0.50 | $0.25 |
感情分析 | 無料 | $1.00 | $0.50 | $0.25 |
構文解析 | 無料 | $0.50 | $0.25 | $0.125 |
エンティティ感情分析 | 無料 | $2.00 | $1.00 | $0.50 |
※100文字=1ユニット、1ユニットあたりの料金
機能 | 10 M ユニットまで | 10 M~50 M ユニット | 50 M ユニット超 |
---|---|---|---|
キーフレーズ抽出 | 0.0001USD | 0.00005USD | 0.000025USD |
感情分析 | 0.0001USD | 0.00005USD | 0.000025USD |
エンティティ認識 | 0.0001USD | 0.00005USD | 0.000025USD |
言語検出 | 0.0001USD | 0.00005USD | 0.000025USD |
構文解析 | 0.00005USD | 0.000025USD | 0.0000125USD |
1000文字あたりの概算料金を比較してみました。月に1000文字を5000回以上分析する人向けには、Amazon Comprehendの方が有利ですね。値段にして10倍近く安いです。
ただし、Natural Language APIも使い方次第では料金でも優位性があります。グラフ中オレンジ点線で囲ったところ、縮尺でつぶれてしまっていますが、月に1000文字を5000回以内で使用する方には、Natural Language APIがいいでしょう。値段はなんと無料です。
