Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Eight Emotions, 34,792 Tweets, and One Label I Don't Fully Trust

2026年10月08日に「Dev.to」が公開したITニュース「Eight Emotions, 34,792 Tweets, and One Label I Don't Fully Trust」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

ツイートのような短いテキストから8種類の感情を予測する感情分析プロジェクトを構築し、ロジスティック回帰で63.5%の精度を達成した。しかし、「joy」と誤分類された例から、データセットのラベル自体に不正確なものが含まれる可能性が判明。モデルを疑う前に、データ(ラベル)の品質確認が重要だと学んだ。

ITニュース解説

このプロジェクトは、短いテキストから人間の感情を識別する機械学習モデルの構築を目指したものだ。具体的には、テキストが示す感情を「喜び」「悲しみ」「恐怖」「怒り」「驚き」「中立」「嫌悪」「恥」という8つのカテゴリに分類する。一般的なポジティブ・ネガティブといった単純な二値分類ではなく、より細かな感情のニュアンスを捉えることが目的とされている。

しかし、プロジェクトの初期段階で、筆者はある奇妙なデータに直面した。「I have a feeling i will fail french #fuckfrench」(フランス語に落ちる気がする。くそったれフランス語)というテキストが、なぜか「喜び」という感情に分類されていたのだ。人間が読めば、これは不安や不満、怒りに近い感情と捉えるだろう。この、直感と異なるラベルが付けられたデータが、プロジェクト全体を通しての重要な課題となり、最終的な学びへと繋がっていく。

プロジェクトで使われたデータセットは約3万4千件の短いテキストから構成されており、主にTwitterのような形式の文章が収集されている。このデータセットには、感情のカテゴリごとに含まれるテキストの数に大きな偏りがあった。「喜び」のテキストが最も多く約1万1千件(全体の約31.8%)あるのに対し、「恥」のテキストはわずか146件(約0.4%)と極端に少ない。このような、カテゴリ間のデータ量の不均衡は「クラス不均衡」と呼ばれ、機械学習モデルを構築する上で注意が必要な問題である。

モデルを構築するプロセスは、いくつかのステップに分かれる。まず、テキストデータの前処理だ。生のテキストには、ユーザー名や「the」「is」といった、感情を判断する上でさほど重要ではない頻出単語(ストップワード)などが含まれている。これらのノイズを除去し、テキストをきれいにするために「NeatText」というツールが使われた。

次に、きれいになったテキストデータを、コンピューターが理解できる数値の形式に変換する必要がある。文字を直接扱うことはできないため、「CountVectorizer」という技術を使って、テキスト中に含まれる各単語の出現回数などに基づき、文章を数値のベクトル(データの並び)として表現した。

数値化されたデータを使って、感情を分類する機械学習モデルを学習させる。ここでは「scikit-learn」という機械学習ライブラリに含まれる「ロジスティック回帰(Logistic Regression)」というモデルが採用された。ロジスティック回帰は、与えられた入力データがどのカテゴリに属するかを予測する統計的な手法である。また、モデルの性能を比較するための基準(ベースライン)として、よりシンプルな「多項式ナイーブベイズ(Multinomial Naive Bayes)」モデルも構築された。

モデルの学習と評価のために、データセットは70%をモデルの学習用、残りの30%を学習したモデルの性能をテストするための評価用として分割された。この際、カテゴリごとのデータ量の偏りが評価結果に影響しないよう、「層化抽出」という手法が用いられた。これは、各感情カテゴリが学習用と評価用のデータセットに均等な割合で含まれるようにデータを分ける方法である。

構築されたモデルの性能は、いくつかの指標で評価された。最も基本的な指標であるテスト精度(モデルが正しく感情を予測できた割合)では、ロジスティック回帰モデルが63.5%を達成した。比較対象の多項式ナイーブベイズモデルは57.2%であり、ロジスティック回帰の方が優れた予測能力を示したことがわかる。また、データセット中で最も件数の多い「喜び」を常に予測し続けた場合の精度が31.8%だったことを考えると、構築されたモデルは意味のある学習をし、このベースラインを大きく上回ったと言える。

さらに、モデルの性能を多角的に評価するため、「F1スコア」という指標も使われた。F1スコアは、モデルが正しく予測できた数(適合率)と、実際の正解をどれだけ見逃さずに予測できたか(再現率)を総合的に評価するもので、今回のモデルではマクロF1スコアが0.60、重み付きF1スコアが0.63を記録した。

全体の精度だけでなく、感情カテゴリごとの予測性能も詳細に分析された。例えば、「恐怖」のF1スコアは0.71と比較的高い一方で、「嫌悪」の再現率は0.18と非常に低く、この感情の識別が特に難しいことが判明した。また、「恥」のF1スコアは0.75と最も高かったが、これはテストデータがわずか44件と非常に少なかったため、この数字はあまり信頼できないと判断された。このように、データ量の偏りがモデルの性能評価に影響を与えることがあるのだ。

最初に筆者を悩ませた「フランス語のテストに落ちる気がする。くそったれフランス語」というテキストが「喜び」とラベル付けされた問題について、筆者は最終的に、モデルが間違っているわけではないという結論に至った。モデルはただ、学習データに含まれる「そのままのパターン」、つまり「誤りを含んだラベル」を学習しただけである。

このデータセットは、ハッシュタグに基づいて感情がラベル付けされた可能性が高いと推測されている。しかし、ハッシュタグが必ずしも文章全体の感情を正確に表すとは限らない。例えば、「#fuckfrench」のようなハッシュタグが、文脈によっては特定の感情を示すものとして誤解釈され、本来は不満や怒りであるべきところに「喜び」のような不適切なラベルが付与されてしまった可能性も考えられる。このような、データに内在する「ノイズ」がモデルの学習に影響を与え、直感と異なる予測結果を生み出したのだ。

このプロジェクトを通じて、筆者はいくつかの重要な学びを得た。一つは、カテゴリ間にデータ量の偏りがある「クラス不均衡」なデータセットを扱う難しさ、そして全体の精度という一つの数字だけでなく、適合率、再現率、F1スコアといったカテゴリごとの詳細な評価指標を読み解くことの重要性だ。また、モデルの予測結果が直感に反する場合、すぐにモデルのアルゴリズムやパラメータを疑うのではなく、まず「学習データに付与されたラベル(正解データ)」そのものの品質を検証することの重要性を痛感した。データに間違いや偏りがあれば、どんなに優れた機械学習モデルを使っても正しい結果は得られない。この経験は、機械学習プロジェクトにおいてデータの品質管理が極めて重要であることを示している。

関連コンテンツ

関連ITニュース