感情分析は、デジタルテキストの中から意見や感情の分類を行う自然言語処理技術です。感情分析は、顧客のフィードバック分析、ソーシャルメディアの監視、市場調査の際に膨大なデータの分析を自動化するために広く利用されています。
感情分析では、テキストデータから主観的な情報を特定して抽出するために、高度な計算手法を活用します。機械学習アルゴリズムやルールベース手法、またはその両方を組み合わせて活用することで、テキストをポジティブ (肯定)、ネガティブ (否定)、ニュートラル (中立)といった感情カテゴリに分類します。
言語的特徴、文脈的な意味、構文構造を分析することで、膨大なデータ群の中に埋もれた意見をより詳細に読み取ることができます。そのため、感情分析は、データが豊富な環境で意味の微妙な違いを読み取り、人間の感情の解釈を自動化する上で非常に効果的な手段です。
感情分析は、ソーシャルメディア、レビュー、アンケートなどのデータソースから入力テキストを収集することから始まります。感情分析の主な手順は、分析に適したデータを準備することと、データ内の感情を分類することの 2 つです。適切な分類器の選択は、データの特性やどの程度の柔軟性が必要かによって変わります。

感情分析の主な手順
感情分析の課題
テキストデータから正しく感情を解釈して分類するには、いくつかの課題があります。主な課題の 1 つは、自然言語自体の曖昧さと多様性です。テキストデータには、アルゴリズムでは正確な解釈が難しい皮肉や風刺、慣用表現などが含まれていることがあります。たとえば、「これは素晴らしい投資だ」という言葉も、皮肉が含まれているとまったく違った解釈になります。
感情分析におけるもう 1 つの課題は、特定分野のテキストデータを分類することです。一般的なデータ群で学習させた感情分析分類器を使用すると、エンジニアリングや科学などの専門分野ではうまく機能しない恐れがあります。たとえば、機械エンジニアや神経科医が使用する高度な専門用語について考えてみましょう。通常、こうした用語は事前学習済み感情分析分類器に学習させていないはずです。
この課題を克服するには、文脈を理解する能力を備えた高度な AI モデルを感情分析に活用することが求められます。こうした高度なモデルでも、特定分野のデータを効果的に処理するには微調整が必要になることもあります。

感情分析で課題となるテキストデータの例。
感情分析に使用されるテキストデータは、ソーシャルメディア、オンラインレビュー、顧客からの直接的なフィードバックから収集されます。こうしたデータを手作業で分析するのは、非常に時間がかかり非効率であるだけでなく、ミスが発生しやすくなります。感情分析は、自然言語処理 (NLP) や人工知能 (AI) といったテクノロジーを活用することでプロセスを自動化し、膨大な量のテキストデータの中で表現された感情を自動的に解釈して分類します。
この自動プロセスにより、データ分析が加速するだけでなく、企業はより早い段階で適切な意思決定を行えるようになります。たとえば、製品や機能をリリースした直後からユーザーの感情を追跡し、製品の将来的な方向性を素早く効率的に定めることができます。

感情分析に使用されるテキストデータは、ソーシャルメディア、オンラインレビュー、顧客からの直接的なフィードバックから収集されます。
感情分析の事例
感情分析は、幅広い業界の組織でさまざまな用途で活用されています。以下はその一例です。
- トレード戦略: 投資決定の参考となる金融関連のニュース記事やソーシャルメディアから市場の感情を評価します。市場の感情を把握することで、トレーダーは市場の動向を予測し、それに合わせて戦略を調整できます。
- 市場調査: カスタマーレビューやソーシャルメディアの投稿を分析して、ブランドや製品に対する世間一般の受け止め方を把握します。これにより、企業は消費者の感情をもとに独自のマーケティング戦略を立てて、自社の製品やサービスを改善することができます。
- 健康調査: 患者のレビュー、ソーシャルメディアの投稿、医療フォーラムでの評価など、健康関連のテキスト内での感情表現や意見を分析します。この分析により、医療組織が、医療サービス、治療法、健康政策に対する世間の受け止め方を理解することで、トレンドの特定や患者ケアの改善、現実世界のフィードバックに基づいた独自の公衆衛生戦略の策定が可能になります。
- ユーザーインサイト: アンケートやサポートチケットからのフィードバックを分析して、顧客満足度を割り出します。これにより、企業は顧客の特定の問題に対処し、全体的なサービスの質を向上させることができます。
- ソーシャルメディアの監視: ソーシャル メディア上でブランドがどのように言及されているかを追跡し、企業やその製品に対する全体的な感情を把握します。これにより、企業はターゲット層と効果的に関わり、オンライン上でどのように受け止められているかを先を見越して管理できるようになります。

感情分析のユースケースの例
企業にもたらされる感情分析のメリット
企業は、以下の実現を目指し、感情分析の導入を急速に進めています。
- 製品やサービスの開発の強化: 感情分析システムにより、企業は信頼性の高い具体的な顧客フィードバックに基づいて、製品やサービスを改善できます。AI 技術を活用すると、ネガティブな感情に関連する現実世界の対象や事象を特定できます。
- 分析作業のスケールアップ: 企業は、膨大な量の非構造化データ (電子メール、チャットボットとのやり取り、アンケート、CRM 記録、製品レビューなど) から継続的にインサイトを引き出しています。クラウドベースの感情分析ツールを利用すると、費用対効果の高い手段でテキストデータから顧客の感情を抽出し、効率的にスケールアップできるようになります。
- リアルタイムでインサイトを把握: 今日の急速に変化する市場環境において、企業は潜在的な危機や新たなトレンドに素早く対応しなければなりません。マーケティング担当者は感情分析ソフトウェアを利用して、自社のブランド、製品、サービスに対する顧客の感情をリアルタイムに評価し、そこから得られたインサイトに基づいて直ちに行動を起こすことができます。
エンジニアにもたらされる感情分析のメリット
感情分析を活用することで、エンジニアは製品を品質を強化し、ユーザー満足度を高め、プロジェクト全体の成功に貢献することができます。メリットには、以下のようなものがあります。
- ユーザー フィードバック分析の強化: 感情分析により、エンジニアは膨大な量のユーザー フィードバックを自動的に処理して解釈し、製品や機能に対する優勢な感情を特定することができます。これにより、バグ修正や機能強化など、すぐに対応が必要な領域に開発労力を集中させ、優先的に対応することができます。
- 製品開発の改善: 顧客の感情を理解することで、製品設計や機能の優先度に関して、情報に基づいた意思決定を行うことができます。感情分析から得られるインサイトで開発プロセスの方向性が明らかになることで、ユーザーの期待と市場の要求に合致した新機能を開発できるようになります。
- データ主導の意思決定: 感情分析は、テキストデータから得られるアクショナル インサイト (行動につながる情報) をエンジニアに提供し、データに基づいた意思決定プロセスを支援します。感情のトレンドを理解することで、エンジニアは製品ロードマップや開発サイクルをより効果的に戦略化することができます。
- 競争優位性: 感情データを分析することで、競争優位性をもたらすトレンドやパターンを特定できます。ユーザーが競合製品をどのように受け止めているかを把握することは、戦略的な改善やイノベーションの参考となり、製品を市場でより優位に位置づけることができます。
- リソースの最適化: 自動化された感情分析が、製品やサービスのどの部分がユーザーにとって最も重要であるかを浮き彫りにし、エンジニアのリソース配分業務をさらに効率化します。これにより、ユーザー満足度に最も大きな影響を与える領域に時間と労力を費やすことができます。
このトピックについてさらに詳しく
感情分析の主な手順は、データの準備とデータに含まれる感情の分類です。感情分析分類器は、ルールベースのシステムあるいは機械学習モデルで構成されています。
感情分析のためのデータ準備
非構造化テキストを分類器で処理できる構造化形式に変換する技術には、以下のようなものがあります。
- トークン化: 通常、これは自然言語処理におけるテキスト処理の最初の手順です。テキストを文や単語に分割することを指します。トークン化は、感情分析における一般的なデータ準備の手順です。感情分析分類器の種類と予測能力によっては、さらにデータの前処理が必要になる場合があります。
- ストップワードの除去: 「the」、「and」、「to」などのストップワードと呼ばれる単語は、テキストデータにノイズを発生させる可能性があります。ストップワードを除去することで、感情分析分類器をより意味のある情報価値の高い単語に集中させることができます。
- レンマ化: このテキスト正規化手法では、意味解析と形態素解析を用いて単語の接辞を除去します。たとえば、"building has floors " は "build have floor "になります。

感情分析のためのデータ準備手順。
データが適切な構造化形式に変換されたら、感情を正確に予測できる分類器を選択する必要があります。
ルールベースの感情分析
ルールベースの感情分析では、アルゴリズムが事前に定義された一連のルールと辞書に基づいて入力データに自動的にラベル付けを行います。この手法は、通常、感情辞書で分類される特定の単語やフレーズがあるかどうかを基準に評価します。感情辞書とは、単語ごとに感情の極性 (ポジティブ、ネガティブ、ニュートラル) が注釈付けされているリストのことです。この分析では、単語を識別するためにテキストを解析して、構文ルールに当てはめることで、感情を変える可能性がある否定語や強調語などの修飾語が考慮されます。
ルールベースのシステムは理解と実装が容易である反面、皮肉や文脈に依存する表現などの複雑な言語構造を処理する柔軟性や微妙な意味の違いを理解する能力を備えていないことが多く、AI を活用した手法と比較すると精度に限界が生じる可能性があります。こうした制限にもかかわらず、ルールベースの感情分析は、言語が比較的予測可能で明確に定義されている特定のタスクでは効果的に機能します。

事前に定義された一連のルールに基づいて文章に含まれる感情を分類するルールベースの感情分析の例。
AI による感情分析
AI モデルは通常、感情分析においてルールベースのシステムよりも精度が高いと言われています。膨大なテキストデータ群を処理し、明示性と暗示性の観点からデータ内のさまざまなパターンを学習することができます。感情分析モデルは、教師あり学習アルゴリズムを使用して構築されます。
画像データの分類器などと同様に、感情分析モデルも相当量のデータ群とそれに対応するラベルを用いて学習を行います。学習済みのモデルは分類に使用できます。推論フェーズにはモデルが入力に対して適切なラベルを予測します。

AI を活用した感情分析と画像の分類における学習フェーズと推論フェーズのプロセス比較。
感情分析のための AI モデルの種類
決定木やサポート ベクター マシン (SVM) などの従来の機械学習モデルは、Bag-of-Words などの特徴抽出技術を利用してテキストを数値表現に変換します。これらのモデルは、異なる感情分類に関連付けられたパターンを学べるようラベル付けされたデータ群で学習を行います。計算効率と解釈性に優れる一方で、特徴量エンジニアリングの質によって機能に差が生じ、複雑な言語の微妙な違いや文脈を捉えるのが難しい場合があります。
ディープラーニング モデルは、より洗練された方法で言語を理解します。リカレント ニューラル ネットワーク (RNN) とその派生である長短期記憶 (LSTM) ネットワークなどは、シーケンシャルデータを処理できるため、テキストデータ内の長期的な依存関係を学習するのに適しています。畳み込みニューラル ネットワーク (CNN) も、word2vec のような単語埋め込みと組み合わせて感情分析に使用することができます。
ディープラーニング モデルの特殊なタイプとして、トランスフォーマー モデルがあります。BERT (トランスフォーマーの双方向エンコーダー表現) などのトランスフォーマー モデルが NLP に導入されたことで、感情分析の能力が大幅に向上しました。

予測能力、複雑性、学習データのサイズの観点から見た感情分析向け AI モデルの比較。
LLM を使用した感情分析
GPT モデルのような大規模言語モデル (LLM) は、基盤としてトランスフォーマー アーキテクチャが採用されています。トランスフォーマー モデルは、単語間の複雑な関係性や人間の言語の微妙な意味の違いを捉えることができます。こうしたモデルは計算負荷が高く、大規模な学習データ群を必要としますが、感情分析において最も優れた精度と柔軟性を発揮します。
LLM は感情分析タスクごとに微調整が可能です。微調整とは、事前学習済みのモデルを特定のタスク向けに調整することです。これを行うことで、小規模なデータ群を用いた大規模モデルの再学習が可能になる一方で、精度の高い分析を実現できます。たとえば、BERT モデルにもう 1 つレイヤーを追加し、より小規模なデータ群を用いて再学習を行うことで、感情分析を実行することができます。

感情分析向けの BERT モデルを微調整します。
MATLAB®、Text Analytics Toolbox™、Deep Learning Toolbox™ では、組み込みツールや LLM を活用することで、さまざまな用途向けに感情分析を実施することができます。
データの準備
ライブ エディターの [テキスト データの前処理] タスクを使用して、非構造化言語データを対話的に構造化形式に変換し、データをクリーニングできます。あるいは、組み込み関数を使用して、プログラムにより NLP データを準備することもできます。
ワードクラウドと散布図を使用すると、テキストデータ、モデル、感情分析の結果を可視化できます。

頻出する単語を示したワードクラウドを用いて、ポジティブな単語とネガティブな単語を可視化します。(MATLAB コードを参照)
ルールベースの感情分析
感情分析用の組み込み関数 vaderSentimentScores と ratioSentimentScores を使用して、テキストを分析することができます。これらの関数は、VADER 感情辞書によって提供される構成単語の感情スコアに基づいて、文の感情スコアを計算します。また、単語の意味的な詳細を捉えるためにワード埋め込みを使用して特定分野の辞書を生成したり、英語以外の言語での感情分析のためにカスタム感情分析モデルを生成したりすることもできます。
AI を活用した感情分析
感情分析のために、さまざまな種類の機械学習モデルを学習させることができます。たとえば、わずか数行の MATLAB コードを記述するだけで、LSTM を作成して学習させることができます。また、感情分析を含むさまざまな NLP タスクに合わせて微調整できるトランスフォーマー ニューラル ネットワークである、事前学習済み BERT モデルを使用することもできます。
LLM を使用した感情分析
MATLAB リポジトリを用いた大規模言語モデル (LLM) には、MATLAB で LLM にアクセスして操作するために使用できるコードが提供されています。MATLAB を OpenAI® Chat Completions API (ChatGPT™ を強化)、Ollama™ (ローカル LLM 向け)、Azure® OpenAI サービスに紐づけることができます。
例: GPT モデルを使用した感情分析の実行
システムプロンプトを指定します。システムプロンプトは、アシスタントにどのような動作をさせるかを指示するもので、この場合は感情分析ツールとしての役割を果たします。また、システムに対して感情分析を行うための簡単な例も提供します。
systemPrompt = "You are a sentiment analyser.You will look at a sentence and output"+...
" a single word that classifies that sentence as either 'positive' or 'negative'. "+...
"Examples: \n"+...
"The project was a complete failure. \n"+...
"negative \n\n"+...
"The team successfully completed the project ahead of schedule. "+...
"positive \n\n"+...
"His attitude was terribly discouraging to the team. \n"+...
"negative \n\n";
システムプロンプトを渡して OpenAI Chat オブジェクトを初期化します。
chat = openAIChat(systemPrompt,ApiKey=my_key);
分類する新しい文を渡して応答を生成します。
text = generate(chat,"The team is feeling very motivated.") text = "positive"
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します: United States
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)