感情分析
感情分析とは。仕組みと、日本語での限界
文章が肯定的か否定的かを機械が判定する仕組みと、その結果をどこまで信じてよいのか。日本語で精度が落ちる理由まで整理します。
更新日:
執筆・運営:Klang AI AB
BASICS
感情分析とは
センチメント分析とも呼ばれ、文章に表れた評価の向き——肯定か否定か——を機械的に判定する技術です。
扱う対象は大きく3つに分かれます。1つめは極性で、肯定・否定・中立のどれに当たるかを判定します。2つめは強度で、どれくらい強い評価かを数値で出します。3つめは対象の切り分けで、「操作は簡単だが価格が高い」のように1文に複数の評価が含まれるとき、何に対する評価かを分けます。
実務でいちばん使われるのは極性の判定ですが、いちばん誤解を招きやすいのもここです。「否定が20%」という数字は一見わかりやすい一方で、何を否定しているのかが分からないと、次の行動につながりません。
HOW
判定の仕組み
やり方は大きく3種類あり、それぞれ得意な場面と外し方が違います。
どの方式でも共通して言えるのは、書かれている言葉から評価を推定しているだけであって、書いた人の内心を読み取っているわけではないという点です。丁寧に不満を述べる人と、率直に述べる人では、同じ不満でも判定が変わります。
辞書ベース
「良い」「不満」などの評価語に点数を割り当てた辞書を使い、文中の語を足し引きします。理由が説明できる一方、辞書にない言い回しや業界用語に弱くなります。
機械学習ベース
正解を付けたデータで学習させ、傾向から判定します。精度は上がりますが、学習させた領域から離れると外れます。判定の理由は説明しにくくなります。
大規模言語モデル
文脈を踏まえた判定ができ、対象ごとの切り分けも比較的得意です。判定の理由も言語で説明させられますが、その説明が必ずしも実際の判定根拠とは限りません。
JAPANESE
日本語で難しい理由
英語向けに作られた仕組みをそのまま持ってくると、日本語では期待より精度が落ちます。理由ははっきりしています。
- 否定が文末に来る。「使いやすいとは言えません」は、最後まで読まないと向きが決まりません。文の一部だけを見る方式では取りこぼします。
- 敬語と婉曲表現が多い。「検討させていただきます」「難しいかもしれません」は、実質的な否定でも語としては中立です。
- 主語が省略される。誰が誰を評価したのかが文中に現れないため、対象の切り分けが難しくなります。
- 皮肉と称賛が同じ語で表される。「さすがですね」は文脈がないと判定できません。
- 単語が空白で区切られない。形態素解析の精度がそのまま感情判定の精度に影響します。
- 評価が文をまたぐ。「価格は想定内でした。ただ」のように、次の文で反転することがあります。
USES
向いている用途、向かない用途
感情分析は「どこを読むか決める」ための道具として使うとよく効き、「結論を出す」ために使うと外します。
| 用途 | 向き | 理由 |
|---|---|---|
| 大量のレビューから、読むものを絞る | 向く | 多少外れても、読む候補が減れば目的を果たす |
| 時系列で変化に気づく | 条件つき | 収集元・判定方法・対象の条件をそろえて確かめる |
| 個人の評価や査定 | 向かない | 個別の判定精度が足りず、影響が大きすぎる |
| 商談の受注確度の判断 | 向かない | 発言の丁寧さが評価と一致しない |
| 問い合わせの緊急度の仕分け | 条件つき | 誤判定時の救済ルートを用意できるなら有効 |
| 報告書に載せる数値指標 | 条件つき | 母数と判定方法を併記できる場合に限る |
READING
結果の読み方
感情分析の数字は、単独では意味を持ちません。必ず何かと並べて読みます。
- 対象とセットで見る。「否定20%」ではなく「価格に関する言及のうち否定20%」まで絞ると、行動につながります。
- 比較条件をそろえる。収集元の比率、対象期間、文章の長さ、モデルのバージョン、指示文、判定の閾値を記録します。条件が変わった増減を、そのまま顧客の変化と読まないようにします。
- 極端な事例を実際に読む。最も否定的と判定された数件を読めば、判定がずれているかどうかはすぐ分かります。
- 中立の扱いを確認する。判定できなかったものを中立に入れている場合、中立の多さは精度の低さを意味します。
- 判定方法を書き残す。方式を変えると数値が動くため、比較するときに何を変えたかが分からなくなります。
WORKED EXAMPLE
日本語の短文を、対象と文脈に分ける
以下は読み方を説明するための架空例です。AIサービスの実測結果ではありません。文章に書かれた評価と、話した人の内心を分けて扱います。
| 原文 | 評価対象・仮の読み方 | 確認すること |
|---|---|---|
| 使いやすいとは言えません | 操作への否定 | 文末の否定まで読む |
| 価格は高いが操作は簡単だ | 価格は否定、操作は肯定 | 文全体の一つのラベルに潰さない |
| 検討させていただきます | 購入判断は保留 | 前後の会話なしで拒否と断定しない |
| さすがですね | 文脈がなければ判断保留 | 称賛か皮肉かを語だけで決めない |
WORKED EXAMPLE
中立と、肯定・否定が混ざる状態は違う
Google Cloud Natural Language APIでは、評価の向きをscore、感情表現の量をmagnitudeとして表します。これは同APIの説明であり、Klangの出力項目ではありません。
| 値の組み合わせ | 考えられる読み方 | 注意点 |
|---|---|---|
| scoreが0付近・magnitudeが低い | 感情表現が少ない可能性 | 中立を必ず正しく判定したとは限らない |
| scoreが0付近・magnitudeが高い | 肯定と否定が混在する可能性 | 文ごとの対象と評価を確認する |
| 長文でmagnitudeが大きい | 表現量が多い可能性 | 長さが違う文章をそのまま比較しない |
WORKED EXAMPLE
人の判定と、比較したい判定を並べる
例題4件の比較用ラベルは説明のために作ったものです。実測精度ではありません。実務では自社の許可された文章を使い、人の判断にも保留欄を設けます。
この例では、人が否定と読んだ2件が、比較用ラベルでは肯定または中立になっています。「否定の見落とし2件 / 人が否定と読んだ2件」と数えられますが、この小さな架空例から製品の精度は評価できません。判断保留は中立に置き換えず別に集計します。
| 原文 | 評価対象 | 人の仮ラベル | 比較用の仮ラベル | 見直す理由 |
|---|---|---|---|---|
| 設定が分かりやすい | 設定 | 肯定 | 肯定 | 一致 |
| 使いやすいとは言えません | 操作 | 否定 | 肯定 | 否定表現の見落とし |
| 価格は高いが操作は簡単だ | 価格 | 否定 | 中立 | 対象別に分けて再確認 |
| 検討させていただきます | 購入判断 | 判断保留 | 中立 | 前後の会話が必要 |
判定より先に、何と言っていたかを確かめられる
Klangは会話を話者ごとに文字起こしし、要約や分析からもとの発言へたどれる形で残します。判定の数字だけを見て判断せずに済みます。
- 分析の結果から、実際の発言に戻って確認できます。
- 話者分離は、顧客の発言と自社の発言を区別する助けになります。重なった発話などでは誤りが生じるため、分析前に話者ラベルを確認します。
- 複数の会話をまたいで、繰り返し出ている論点を取り出せます。
よくある質問
感情分析の精度はどれくらいですか。
対象とする文章の種類、判定方式、どこまでを正解とするかで大きく変わるため、一律の数値は示せません。自社のデータで数十件を人が判定し、機械の判定と突き合わせて確かめるのが唯一確実な方法です。
会議や商談の音声でも使えますか。
文字起こしをすれば対象にできます。ただし話し言葉は言いよどみや言い換えが多く、書き言葉より判定が不安定になります。誰の発言かを分けていない文字起こしでは、顧客と自社の発言が混ざって結果が意味を持ちません。
従業員の発言を感情分析してもよいですか。
個人の評価や監視につながる使い方は避けるべきです。目的と対象範囲、結果を誰が見るかを先に決め、本人に伝えたうえで、組織全体の傾向を見る用途に限るのが安全です。
中立と判定される割合が高いのですが。
事実の記述が多い文章では自然なことです。一方で、判定できなかったものを中立に含めている場合もあります。中立と判定された文章を数十件読めば、どちらなのかはすぐ分かります。