はじめに
本ブログ記事は、以下の読者を想定しております。
本ブログ記事では、主要クラウドプラットフォームであるAWS、GCP、およびAzureがそれぞれ提供している自然言語分析サービスについてまとめます。 また、実際のレビューを与えてみて、どのような分析傾向を示すかを比較します。 なお、本記事の比較は2020年3月上旬時点での比較になります。
今回の目的
ECサイトを運営されている方なら、商品に関するレビュー情報を日々蓄積されているのではないかと思います。 そして昨今、自然言語分析を行えるサービスは増えており、どのサービスを使えばレビュー情報を有効活用できるのか迷う方が多いのではないかと思います。 今回は、実際にAmazon.co.jpの日本語商品レビューを与えてみて、どのような分析傾向を示すかを試してみます。
比較対象
今回の比較する対象は以下の条件のサービスです。
上記の条件から、以下の3つのサービスを比較検証します。
プラットフォーム | 提供元 | サービス名 |
---|---|---|
AWS | Amazon | Amazon Comprehend |
GCP | Cloud Natural Language API | |
Azure | Microsoft | Microsoft Cognitive Services |
機能比較
サービス毎に分析できる内容に差異があるため、機能を以下の表にまとめました。
分析種別 | 取得データ種別 | AWS | GCP | Azure |
---|---|---|---|---|
単語種別分析 | 単語属性 | ○ | ○ | ○ |
Score | ○ | ○ | ○ | |
重要単語分析 | 文字列 | ○ | ○ | ○ |
Score | ○ | ○ | × | |
言語分析 | ○ | ○ | ○ | |
ネガポジ分析 | Positive指数 | ○ | × | ○ |
Negative指数 | ○ | × | ○ | |
Neutral指数 | ○ | × | ○ | |
Mixed指数 | ○ | × | × | |
PositiveNegative指数 | × | ○ | × | |
Magnitude指数 | × | ○ | × | |
構文解析 | 日本語不可 | ○ | × |
上記表より、以下の点は認識しておいた方が良いでしょう。
- Azureは重要単語の抽出はできるが、それぞれの重要度は数値化されない
- ネガポジ分析をした時、GCPはネガティブポジティブを混ぜたPositiveNegative指数[-1〜1]を返すが、他はそれぞれの要素を返す
- 構文解析をしたいなら、GCPを利用する
Amazonの日本語商品レビューを用いた比較検証
検証条件
今回は以下の条件で検証を行います。
- 星1〜5それぞれのトップレビュー、計5つを利用
- 利用するレビューはこの商品のレビューを利用します
- 専門用語が発生しやすい商材であること
- 100件以上のレビューがあること
- トップレビューが3文以上の長文であること
- 各トップレビューが"役に立った"が1つ以上ついており、レビュー内容に信頼がおけること
上記より、検証に使用するレビューは以下の5つです
また、比較する内容は以下の2つです。
- レビューからどれだけの数の重要単語を抽出できるか
- レビューのネガポジ判定と星の数は連動するのか
では実際に比較を行っていきます
1. レビューからどれだけの数の重要単語を抽出できるか
ここでは、各レビューから各サービスの重要度を抽出する機能で、どれだけの単語(またはフレーズ)を抽出できるか数を比較します。 実際に抽出された単語が重要かどうかのクオリティは筆者の主観で判定しています。 重要かどうかの判断は、商品の特徴を示す単語か、購入理由を示す単語かどうかです。
対象データ | AWS | GCP | Azure |
---|---|---|---|
星5(重要数/抽出数) | 46/107 | 36/88 | 25/79 |
星4(重要数/抽出数) | 22/46 | 21/38 | 22/42 |
星3(重要数/抽出数) | 13/27 | 15/26 | 13/25 |
星2(重要数/抽出数) | 5/9 | 6/10 | 5/10 |
星1(重要数/抽出数) | 18/26 | 19/29 | 5/10 |
上記より、抽出単語数はAzureが少なめに出る傾向がありそうです。 重要さの精度は、各プラットフォーム大きな違いはなさそうです。
以下、解析データ生ログです。 bit.ly
2. レビューのネガポジ判定と星の数は連動するのか
ここでは、各レビューをネガポジ分析して、そのレビューの星の数と相関性を調べてみます。 各レビューを与えた時の、処理結果は以下のようになります。
星 | AWSポジ | AWSネガ | GCPネガポジ | Azureポジ | Azureネガ |
---|---|---|---|---|---|
5 | 0.04963141307 | 0.9001365304 | 0.1000000015 | 0.59 | 0.34 |
4 | 0.6372610927 | 0.02557501569 | 0.1000000015 | 0.57 | 0.4 |
3 | 0.01561446674 | 0.975064218 | 0 | 0.46 | 0.47 |
2 | 0.004263920709 | 0.9897603393 | -0.1000000015 | 0.31 | 0.67 |
1 | 0.007644680794 | 0.98726511 | 0 | 0.2 | 0.39 |
GCPはネガポジ合わせたものしか取得できないため、ネガポジ = ポジ - ネガ として計算すると、以下のようなグラフになります。
以下、解析生ログです。
星5のgoogle/Azureの評価数値と比べてAWSの数値はかなり低い数値を算出しています。ネガポジ分析において、AWSは精度はまだまだこれからという状況に見えます。
まとめ
各プラットフォームの自然言語分析サービスについて、日本語の商品レビューを分析するという観点で比較を行いました。 各プラットフォームが提供している自然言語解析の分析モデルはこれからも性能向上が考えられるため、現状だけでなく継続的に精度を比較しながら適切なサービスを選択して行ければと思っています。
参考
- AWS(Amazon Comprehend)の説明 aws.amazon.com
- GCP(Cloud Natural Language API)の説明とデモ cloud.google.com
- Azure(Microsoft Cognitive Services)の説明とデモ azure.microsoft.com