Sentiment Analysis
感情分析は、テキスト中の意見をポジティブ、ネガティブ、ニュートラルに分類します。辞書ベースの手法とTransformerを使った手法、アスペクト、バイアスを解説します。
感情分析はオピニオンマイニングとも呼ばれ、テキストが示す態度を特定する自然言語処理(NLP)のタスクです。通常は肯定的、否定的、中立として分類し、場合によってはスコア、星評価、怒りや喜びなどの感情として表します。企業は製品レビュー、サポートチケット、アンケート回答、ソーシャルメディア投稿を分析し、チームが読み切れないほど大量のテキストから、顧客が製品やブランドにどう感じているかを測定します。また、サポート用チャットボットは、怒っている顧客を最初に担当者へ引き継ぐために感情分析を使います。
分析のレベル#
ドキュメントレベルの分析ではレビュー全体に1つのラベルを付与し、文レベルの分析では各文にラベルを付与します。アスペクトベース感情分析(ABSA)はさらに踏み込み、テキストに登場する各特徴への意見を特定します。「画面は素晴らしいが、バッテリーは午前中も持たない」という文は、画面については肯定的で、バッテリーについては否定的です。ABSAに関するSemEval-2014の共有タスクでは、ノートパソコンとレストランのレビューを使ってこの設定を標準化しました。また、アスペクト抽出は固有表現認識(NER)と重なる部分があります。どちらも文が扱う対象を見つけるためです。
辞書ベースの手法からTransformerへ#
辞書ベースの手法では、肯定または否定のスコアを付けた単語の一覧である感情辞書から単語数を数え、否定(「良くない」)や強調(「とても良い」)のルールを追加します。Peter Turney氏の教師なし手法(2002年)は、Web上で「excellent」または「poor」の近くに現れる頻度に基づき、フレーズをスコアリングしました。VADER(2014年)はソーシャルメディア向けに辞書とルールを調整し、顔文字、大文字、感嘆符も扱いました。同じく2002年には、Bo Pang氏、Lillian Lee氏、Shivakumar Vaithyanathan氏が映画レビューを使ってナイーブベイズ、最大エントロピー、サポートベクターマシン(SVM)の分類器を学習させました。人手で作成したキーワードリストは上回りましたが、トピック分類と比べると感情分析の性能は低いことが分かりました。
スタンフォード感情ツリーバンク(2013年)は、11,855件の映画レビュー文から215,154件のフレーズにラベルを付与しました。これにより、モデルは「not」や「but」などが後続する内容の感情をどう変えるかを学習できました。また、その二値分類版であるSST-2は、GLUE ベンチマークの一部になりました。現在、ほとんどの分類器は、事前学習済みのTransformer(BERTなど)をラベル付きの例でファインチューニングし、出力スコアをSoftmaxでクラス確率に変換します。SST-2でファインチューニングしたDistilBERTは、検証セットで91.3%の精度を達成します。
from transformers import pipeline
# DistilBERT fine-tuned on the Stanford Sentiment Treebank (SST-2)
classifier = pipeline("sentiment-analysis", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
reviews = [
"The battery life is not bad at all.",
"Oh great, it crashed again five minutes after the update.",
"The screen is gorgeous, but the battery barely lasts a morning.",
]
for review, result in zip(reviews, classifier(reviews)):
print(f"{result['label']:<8} {result['score']:.3f} {review}")分類器は「not bad at all」を肯定的(0.997)と判定し、皮肉を込めたレビュー「Oh great」を否定的(0.998)と判定します。3つ目のレビューは画面を称賛し、バッテリーを批判していますが、ドキュメントレベルのモデルが返せるラベルは1つだけです。否定的(0.966)と判定され、称賛の部分は結果に反映されません。大規模言語モデル(LLM)もプロンプトからゼロショットで感情を分類でき、アスペクトごとに1つのラベルを返せますが、レビューあたりのコストはパラメーター数6,600万の分類器より大幅に高くなります。
マルチモーダル感情分析#
人は言葉だけでなく、声のトーンや表情でも意見を表現し、皮肉は声のトーンにしか表れないことがよくあります。CMU-MOSEIは、公開時点でこの設定を扱う最大規模のデータセットであり、1,000人の話者による動画セグメント23,453件の感情にラベルを付与しています。マルチモーダル学習モデルは、文字起こし、音声、話者の顔を組み合わせて感情を予測します。これは感情コンピューティングにも共通する目標です。顔の情報は画像分類の課題です。表情ごとに1つのフォルダーに分類した顔画像を使って学習したUltralytics YOLO26分類モデルは、result.probsで各表情の確率を返します。これは、上記のテキスト分類器が出力するものと同じ種類のSoftmax出力です。
課題#
皮肉、反語、比較表現(「古いものよりは良いが、大したことではない」)は依然として難しい課題です。感情を示す単語の意味は分野によって異なります。「予測不能」は映画の筋書きについては称賛になりますが、車のハンドリングについては批判になります。そのため、新しい学習データなしに映画レビューで学習したモデルを製品レビューに適用すると、精度が低下します。モデルはデータに含まれるバイアスも受け継ぎます。Svetlana Kiritchenko氏とSaif Mohammad氏は2018年に、名前や「he」「she」のような性別を示す単語だけが異なる文を使って、219の感情分析システムを評価しました。その結果、名前から推測される性別や人種によって、複数のシステムが一貫して高い、または低いスコアを出しました。
感情分析と関連用語の比較#
- テキスト分類: トピックやスパムなど、テキストにラベルを付与する一般的なタスクです。感情分析は、意見を示すラベルを使うテキスト分類です。
- 感情認識: テキスト、顔、声、生理信号から特定の感情を検出します。感情分析では通常、意見を極性に集約します。
- 固有表現抽出: テキストに何が記載されているかを特定し、ABSAは各言及箇所と、それに対して表明された意見を対応付けます。










