# 否定文理解
## 定義
否定文理解(negation understanding)は、「〜ではない」「〜でない」などの否定表現を含む文を、その意味を逆転させた表現として正しく処理する自然言語処理の能力である。BERT・GPT 系をはじめとする現代の言語モデルにとって、単語レベルの意味的類似性に基づく埋め込み表現や次トークン予測の構造上、否定文を正確に扱うことは根本的な困難を持つ。(Source: [[joisino-否定文理解-2024]])
## なぜ困難なのか
語彙の単語埋め込みは固定されており、意味的に近い語(「東京」「京都」など)は埋め込み空間でも近くに配置される。言語モデルは文脈をベクトル z に圧縮し、固定埋め込みとの内積 + softmax で確率を計算する。「〇〇ではない」という否定に対する正しい答えは「〇〇以外のすべて」だが、これには v_東京 だけに遠く他のすべての語に近いような z が必要で、埋め込み空間の幾何学的制約からそのような z は存在できない。(Source: [[joisino-否定文理解-2024]])
その結果、モデルは「日本」「首都」という語と最も共起しやすい「東京」を、否定文の中でも出力するショートカットを学習する。
## 発現パターン
- **テキスト埋め込みの逆転**: BERT の日本語モデルで「私はお寿司が好きです」と「私はお寿司が好きではないです」のコサイン類似度が 0.9762 と、同意の文ペア(0.9695)より高くなる。
- **穴埋め問題での誤答**: ChatGPT 4o・o1 が「日本の首都は〇〇ではない」の〇〇に「東京」と自信を持って答える。
- **言語・表現を変えても再現**: 英語での質問やリフレーズでも同様に誤答する傾向がある。
## 対処法
| 手法 | 原理 | 限界 |
|------|------|------|
| ファインチューニング | タスク固有の訓練で否定パターンを学習させる | 論理的厳密性が必要な場面では不完全 |
| Chain-of-Thought プロンプト | 中間出力を許して分布を重ね合わせる | テキスト埋め込みが必要な場面では効かない |
| BERTNOT | 否定文の訓練問題を自動生成して明示的に訓練 | softmax の制約は残る |
| テキスト拡張(クエリ・キー拡張) | 否定文を LLM で拡張し肯定的内容に変換してから比較 | 構造的解決ではなく回避策 |
| 文書数増加 | 検索データベースを充実させ否定文が上位に出る確率を下げる | 汎用的だが根本解決ではない |
| 文脈付き検索 | チャンクに文書全体の文脈を付与して拡張 | 否定処理の根本は未解決 |
## 横断的知見
- 本ページは現時点で単一ソース([[joisino-否定文理解-2024]])のみに基づく。横断的比較は今後の ingest で追加する。
## 未解決の問い
- 出力層の単語埋め込みをコンテキスト依存にすれば否定処理は解決するか?コストが大幅に下がる計算効率的な方法はあるか?
- Ettinger [TACL 2020] や Hosseini [NAACL 2021] の後続研究はこの問題をどこまで改善したか?
- LLM のスケールアップ(パラメータ数・データ量の増加)は否定処理能力を改善するか?
- 日本語と英語で否定理解の難易度に差はあるか?
## 関連
- [[テキスト埋め込み]] — 否定文の意味が正しく反映されない埋め込み表現
- [[自然言語推論]] — 否定処理が特に困難なタスクの代表例
- [[文脈付き検索]] — Anthropic の Contextual Retrieval による回避策
- [[言語モデル事前学習]] — 否定文理解の困難の起源となるアーキテクチャ
## 出典
- [[joisino-否定文理解-2024]]