情報戦争は既に始まっている

ディープフェイク、AIボット、合成ニュース。2026年の今、「情報が武器になる」時代はSFではなく現実だ。

ロシア・ウクライナ戦争でも、台湾海峡をめぐる緊張でも、選挙のたびに——AIが生成した偽情報が、SNSのアルゴリズムに乗って指数関数的に拡散する。速度と規模が、人間のファクトチェックを圧倒している。

この問題に向き合って、FactLensというCLIツールを作った。

論文から設計した

まず学術論文を漁った。自動ファクトチェックの研究は2018年頃から本格化している。

  • FEVER (Thorne 2018) — Wikipediaから18万件の主張を生成してベンチマーク化。3段階パイプラインを確立:検出→証拠取得→検証
  • FActScore (Min 2023) — LLMの出力を「原子的事実」に分解して個別検証。ChatGPTの伝記生成は58%しか正確でないことを発見
  • FIRE (NAACL 2025) — 証拠取得と検証を反復的に組み合わせ、F1=0.93を達成
  • SNIFFER (CVPR 2024) — 画像+テキストのマルチモーダル偽情報検出

これらを参考に、スコア計算式を設計した。

VeridexScore = (
  factual_precision × 0.50  ← 原子事実の正確率
  + evidence_weight × 0.30  ← 証拠の品質・信頼性
  + source_diversity × 0.20 ← 情報源の多様性
) × (1 - AI生成ペナルティ) × 100

ラベルは5段階:✅ VERIFIED / 🟡 LIKELY TRUE / 🟠 MIXED / 🔴 LIKELY FALSE / ⛔ FALSE

実装:Rust + Claude API

技術スタックはシンプルに。

  • Rust — バイナリ1本、依存少ない、速い
  • Claude Sonnet 4.6 — 原子的事実の分解と検証
  • Groq (Qwen3-32B) — 比較対象モデル
  • clap — CLI引数
  • reqwest — HTTP(URL取得 + API呼び出し)
  • scraper — HTMLからテキスト抽出

コアの仕組みはシンプル。テキストをClaudeに渡し、「原子的事実に分解してそれぞれ検証してJSON返して」と頼む。

// checker.rs の核心
pub async fn check(text: &str, provider: &Provider, api_key: &str) -> anyhow::Result<CheckResult> {
    // プロンプト: 原子的事実に分解 → 各事実をsupported/refuted/unverifiableで判定
    // スコア = supported数 / (supported + refuted数) × 100
}

実験結果:LLMが間違える、システムは正す

これが一番面白かった。単純にLLMに「この主張は正しいですか?」と聞くのと、FactLensのパイプラインを通すのでは、精度が変わる。

1. 歴史的グレーゾーン(南京・慰安婦・原爆)

Claude単体: 概ね正しい(主張に曖昧に同意しがち)
FactLens:  ・南京死者数 → ⚪ UNVERIFIABLE(学術的に4万〜30万と幅あり、確定していない)
           ・慰安婦「全員自発的」→ ❌ REFUTED(河野談話まで引用)
           ・原爆→本土決戦より少ない → ⚪ UNVERIFIABLE(反事実的仮定で検証不能)

ポイント: 原子分解が強制的に「白か黒か」を問わせる。慰安婦は明確に❌、死者数は「議論中」と分けられる。

2. 偽造引用(最も驚いた結果)

「マーク・トウェインは『真実は嘘よりも奇なり』と言った」

Qwen3-32B単体:   ✅ 正しい(自信を持って断言)
FactLens(Claude): ❌ REFUTED
  → 元々はバイロン卿『ドン・ファン』(1823年)が出典
  → トウェインへの誤帰属。しかも原文は「小説より奇」

「チャーチルは『成功とは熱意を失わずに失敗から失敗へと進む能力だ』と言った」

Qwen3-32B:   ✅ VERIFIED(歴史的に正確と判定)
Claude:      ⚪ UNVERIFIABLE(著作・演説に明確な出典なし、誤帰属の可能性)

Qwenは「有名人の名言として広く知られている」という理由で正しいと判断してしまう。FactLensは「出典が確認できない」として UNVERIFIABLE に落とす。

3. 科学的都市伝説

  • 「人間の脳は10%しか使われていない」→ ❌(fMRI研究で全脳使用が証明済み)
  • 「アルコールは適量なら体に良い」→ ❌(2018年Lancet研究で「安全な飲酒量はゼロ」)
  • 「金魚の記憶は3秒」→ ❌(実験で数ヶ月の記憶が確認されている)

これらはLLMも知っているはずなのに、単純に「アルコールは適量なら…」と聞くと曖昧な肯定をしがちだ。原子的事実として単独で問われると、正確に判定できる。

Claude vs Qwen 総合比較

テストClaudeQwen正確だったのは
歴史的グレーゾーン50 🟠0 ⛔Claude(死者数をUNVERIFIABLEに)
偽造引用50 🟠100 ✅(誤)Claude(出典なし引用を疑う)
科学都市伝説0 ⛔0 ⛔引き分け
陰謀論0 ⛔0 ⛔引き分け

Claudeは「分からないものを分からないと言う」能力が高い。Qwenは断定が速い分、確証なき知識まで自信を持って間違える。

なぜLLMへの単純な質問より精度が上がるか

理由は設計にある。

単純な質問: LLMはコンテキスト全体を見て「この文章は信頼できそうか」を直感的に判断する。人気のある主張、それっぽい文体、有名人の名言——これらのバイアスに引っ張られる。

FactLensのアプローチ:

  1. 文章を「一つの主張」に原子分解する(複合的な誤魔化しを防ぐ)
  2. 各主張に対して supported / refuted / unverifiable の三択を強制する
  3. 理由の明示を要求する(根拠なき断言を防ぐ)
  4. スコアを集計して数値化する(「なんとなく正しそう」を排除)

情報戦争で使われる手口の多くは「正しい事実と誤った事実を混ぜる」だ。全体の印象は正確に見えて、重要な部分だけ嘘を混入させる。原子分解はこれを防ぐ。

今後

CLIとして動くプロトタイプはできた。次はWeb UIとしてデプロイして、誰でも使えるようにする。

URL入力でニュース記事を丸ごとチェックできるようにもしたい。画像のディープフェイク検出も統合したい。

情報戦争は技術の問題でもあるが、最終的には「不確実性に耐える力」が防衛の核心だと思う。AIは「分からない」を言いやすくする設計にする——FactLensはそういうツールにしたい。

コードはオープンソースで公開予定。


FactLensは現在開発中。フィードバックはX(@yukihamada)まで。