文章の感情を「喜び・怒り・悲しみ」だけに分けると、感謝、安堵、失望、困惑、後悔といった違いが失われます。一方で、ラベルを細かくするほど、「怒り」と「苛立ち」、「悲しみ」と「悲嘆」の境界は曖昧になります。
それでは、細かな感情を扱いながら、評価者による判断の違いも記録するには、どのようなアノテーションを設計すればよいのでしょうか。
GoEmotionsは、英語のRedditコメント58,009件に、27種類の感情またはNeutralを人手で付与したデータセットです。一つのコメントに複数の感情を選べるようにし、最初の3人が一致しなかった例だけ評価者を追加することで、規模と品質確認を両立しています。
本記事は公開論文と公開データセットの内容を紹介するものです。株式会社イングクラウドが当該研究またはデータセットの制作へ関与したことを示すものではありません。
細かな感情分類を大規模に行う
GoEmotions: A Dataset of Fine-Grained Emotionsは、Dorottya Demszky氏らがACL 2020で発表した研究です。
GoEmotionsが対象にしたのは、会話全体や書き手の長期的な心理状態ではなく、個々のRedditコメントに表れている感情です。27種類の感情に、感情が特定できない場合のNeutralを加えた28の選択肢を用意しました。
27種類の感情は次のとおりです。
| 傾向 | 感情ラベル |
|---|---|
| 肯定的 | admiration、amusement、approval、caring、desire、excitement、gratitude、joy、love、optimism、pride、relief |
| 否定的 | anger、annoyance、disappointment、disapproval、disgust、embarrassment、fear、grief、nervousness、remorse、sadness |
| 肯否が一意に決まらない | confusion、curiosity、realization、surprise |
この分類は、既存の心理学研究をそのまま転用したものではありません。研究チームは心理学の感情分類を参照しながら、Redditコメントの一部を人手で確認し、予備調査では評価者が既存の選択肢にない感情を提案できるようにしました。そのうえで、文章中の感情を広くカバーすること、感情同士の重複を抑えること、選択肢を増やしすぎないことを考慮して27種類を選んでいます。
2005年から2019年までのRedditコメントを選定した
原論文によると、元データには、Redditの開始年である2005年から2019年1月までのコメントを収録したデータダンプが使われました。
研究チームは、1万件以上のコメントがある英語のsubredditを対象とし、削除済みコメントと英語以外のコメントを除外しました。その後、次のような選定と加工を行っています。
- NSFWに該当するsubredditを除外する
- 攻撃的・成人向け・侮蔑的な語を10%以上含むsubredditを除外する
- 残ったコメントからも攻撃的・成人向け語を含むものを除外する
- 特定の民族、性別、性的指向、障害に対して攻撃的と判断したコメントを人手で除外する
- 3〜30トークンのコメントに限定する
- コメント長、感情、センチメント、subredditの偏りをダウンサンプリングで抑える
軽度の俗語や罵りに当たる語を含むコメントは、否定的感情を学習するうえで重要だとして一律には除外されませんでした。
センチメントと感情の分布を調整するため、研究チームは2,200件の予備アノテーションで感情予測モデルを作り、未アノテーションのコメントへ暫定的な分類を付けました。この予測結果を使って、特定のセンチメント、感情、subredditへデータが集中しないようにコメント数を抑えています。
こうした処理を経て残ったのは、482のsubredditに由来する約315,000件です。最終的に、この候補群からアノテーション対象が無作為抽出されました。
評価者にはコメント本文だけを提示した
アノテーションには、インドの英語母語話者82人が参加しました。評価画面にはコメント本文だけが表示され、投稿者名やsubredditなどのメタデータは表示されませんでした。
評価者への依頼は、「文章を読んで自分がどう感じたか」ではなく、その文章を書いた人が表している感情を選ぶことでした。各感情には定義と複数の例文が用意され、評価者は、文章中に表れていると合理的に確信できる感情だけを選ぶよう求められました。
27種類を一列に並べるだけでは選びにくいため、画面上では感情をセンチメント別に整理し、何かに向けられる傾向のある感情と、内面的な感情も区別して表示しました。ただし、研究チームはこの区分が明確な境界ではないことも説明し、必要であれば区分を無視して選ぶよう促しています。一部の感情には、意味を理解しやすくするため絵文字も添えられました。
一つのコメントに複数の感情を選べる
一つのコメントには、「驚き」と「喜び」、「感謝」と「承認」のように、複数の感情が同時に表れることがあります。そのためGoEmotionsでは、評価者が一つに限定せず、当てはまる感情を複数選べるようにしました。
| 1コメントあたりの感情ラベル数 | コメントの割合 |
|---|---|
| 1個 | 83% |
| 2個 | 15% |
| 3個 | 2% |
| 4個以上 | 0.2% |
どの感情も表れていると確信できない場合はNeutralを選びます。さらに、非常に曖昧で分類が難しいコメントには専用のチェック欄があり、その場合は感情を一つも選ばずに回答できました。難しいと判断された例は全体の1.6%でした。
Neutralと「非常に曖昧で分類困難」は同じではありません。Neutralは感情が表れていないという判断であり、分類困難は評価者が信頼できるラベルを付けられないという判断です。後者のように一つも感情が選ばれなかった例は除外されました。
最初は3人、不一致の例だけ5人で評価した
すべてのコメントには、まず3人の評価者が割り当てられました。この3人の間で一致する感情ラベルが一つもなかった場合に限り、さらに2人を追加しています。そのため、各コメントの評価者数は3人または5人です。
| 集計項目 | 結果 |
|---|---|
| コメント数 | 58,009件 |
| 評価者数 | 82人 |
| 1コメントあたりの評価者 | 3人または5人 |
| 2人以上が少なくとも1ラベルで一致 | 54,263件(94%) |
| 3人以上が少なくとも1ラベルで一致 | 17,763件(31%) |
全件を最初から5人で評価するのではなく、判断が分かれたコメントへ追加評価を集中させる設計です。必要な品質を保ちながら、評価人数と費用を調整する方法として参考になります。
ただし、「3人以上が一致した例は31%」という数値だけで、アノテーション品質が低いとは判断できません。通常は3人で評価しており、一つのコメントへ複数の感情を選べるためです。また、感謝や称賛、面白さは比較的一致しやすい一方、悲嘆や緊張は一致しにくいというラベルごとの差も確認されています。
公開データには生の評価と集約済みデータがある
GoEmotionsの公式配布ページでは、58,009件に対する各評価者の回答を含む生データと、評価者間の一致を条件に集約した学習用データの両方が提供されています。
研究チームがベースラインモデルの訓練に使ったデータでは、一人の評価者しか選ばなかった感情ラベルを除外し、少なくとも一つのラベルが残るコメントだけを採用しました。該当したのは元データの約93%に当たる54,263件です。
| 集約済みデータ | 件数 |
|---|---|
| 訓練データ | 43,410件 |
| 検証データ | 5,426件 |
| テストデータ | 5,427件 |
| 合計 | 54,263件 |
約4,000件の不一致例は、品質が低いとして完全に捨てられたわけではありません。論文は、感情が曖昧な文章や境界事例を研究する価値があるとして、58,009件すべてと各評価者の回答を公開しています。
固有名詞は公開前にマスキングした
人名を指す固有名詞は、BERTを使った固有表現抽出によって「[NAME]」へ置き換えられました。宗教に関係する語も「[RELIGION]」へ置き換えられています。
ただし、評価者がアノテーションした時点では、置き換え前のコメントが表示されていました。感情の判断に必要な情報を評価時には残し、公開データでは一部の表現をマスキングするという順序です。
この処理は、すべての個人情報やセンシティブな内容が除去されたことを保証するものではありません。公式リポジトリも、データに潜在的に問題のある内容や偏りが含まれることを明記しています。
収集時の調整後も感情の件数差は残った
GoEmotionsでは感情分布を均すためのダウンサンプリングが行われましたが、最終的なラベル数は均等ではありません。たとえば、admirationはgriefの約30倍ありました。
これは、データ選定時の予測モデルだけで完全な分布を作ることが難しいことに加え、自然な文章で感情が表れる頻度自体が異なるためです。ラベル数だけを均等にすれば、実際の言語使用とは異なるデータになる可能性もあります。
また、Neutralは全感情ラベルの26%を占めました。細かな感情を多数用意しても、すべての文章に感情が明示されているわけではありません。
GoEmotionsを利用するときの限界
GoEmotionsは大規模で細かな感情データですが、英語の感情表現全体を均等に代表するものではありません。
- 元の文章はRedditコメントに限られ、利用者層や投稿文化の偏りを含む
- 評価者は全員、インドの英語母語話者である
- 評価画面では前後の投稿、投稿者、subredditが示されていない
- 皮肉や内輪の話題など、前後関係がなければ判断しにくい表現がある
- 攻撃的な内容を除外するために使った語彙リストや人手判断にも偏りが入り得る
- 選定段階で使った予測モデルが、抽出される感情分布へ影響している
- 細かなラベルほど件数が少なく、評価者の一致度にも差がある
特に重要なのは、ラベルが投稿者本人の自己申告ではなく、コメントを読んだ第三者による推定である点です。記録されているのは「書き手が実際に感じていた感情」ではなく、「本文から評価者が読み取った感情」です。
日本語の顧客対応、医療、教育などへ応用する場合は、Reddit上の短い英語コメントで得られた分類を、そのまま別の利用場面へ適用できるとは限りません。対象分野の文章を使った追加評価が必要です。
日本語で細かな感情を分類するなら
日本語で同様のデータを作る場合、英語の27ラベルを直訳するだけでは不十分です。日本語で区別しやすい感情、日常的な感情語、敬語や婉曲表現との関係を確認し、予備調査からラベル体系を作る必要があります。
アノテーション仕様では、少なくとも次の点を決める必要があります。
- 書き手の感情と、読み手が受けた印象のどちらを評価するか
- 複数ラベルを認めるか
- Neutralと判定不能をどう区別するか
- 単独の文章だけを見せるか、前後の文脈も見せるか
- 最初の評価人数と、追加評価を行う条件
- 何人の一致を学習用ラベルの採用条件にするか
- 不一致例を除外するか、曖昧さの研究用に残すか
感情ラベルを細かくする場合は、定義文だけでなく、典型例、似たラベルとの違い、複数選択すべき例、Neutralと判定不能の例も作業者へ示す必要があります。
データ制作で参考になる点
GoEmotionsの特徴は、27種類というラベル数だけではありません。データの選定から公開まで、感情分類に入りやすい偏りと曖昧さを複数の工程で扱っています。
- 本番前の予備調査でラベル体系を検討する
- 複数選択、Neutral、判定不能を別の回答として用意する
- 最初は3人で評価し、不一致例だけ評価者を追加する
- 感情ごとに評価者の一致度を確認する
- 学習用データでは複数人の一致を採用条件にする
- 不一致例と各評価者の回答も、境界事例として保存する
- 元データ、評価者、フィルタリング方法の偏りを明記する
感情分類では、すべての文章に唯一の正解があるとは限りません。評価者の不一致を単なるミスとして消すのではなく、追加評価が必要な例、学習データに採用する例、曖昧さの分析に残す例へ分けることが、実用的なデータ設計につながります。
RESEARCH DATASET NOTE
研究データの収集・作成をご相談いただけます
株式会社イングクラウドでは、研究参加者の募集、説明・同意、音声・映像・テキストの収集、アノテーション、検品まで、研究目的に合わせて設計・運用します。仕様や必要人数が決まる前の段階でもご相談いただけます。
