情報戦争は既に始まっている
ディープフェイク、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 総合比較
| テスト | Claude | Qwen | 正確だったのは |
|---|---|---|---|
| 歴史的グレーゾーン | 50 🟠 | 0 ⛔ | Claude(死者数をUNVERIFIABLEに) |
| 偽造引用 | 50 🟠 | 100 ✅(誤) | Claude(出典なし引用を疑う) |
| 科学都市伝説 | 0 ⛔ | 0 ⛔ | 引き分け |
| 陰謀論 | 0 ⛔ | 0 ⛔ | 引き分け |
Claudeは「分からないものを分からないと言う」能力が高い。Qwenは断定が速い分、確証なき知識まで自信を持って間違える。
なぜLLMへの単純な質問より精度が上がるか
理由は設計にある。
単純な質問: LLMはコンテキスト全体を見て「この文章は信頼できそうか」を直感的に判断する。人気のある主張、それっぽい文体、有名人の名言——これらのバイアスに引っ張られる。
FactLensのアプローチ:
- 文章を「一つの主張」に原子分解する(複合的な誤魔化しを防ぐ)
- 各主張に対して
supported / refuted / unverifiableの三択を強制する - 理由の明示を要求する(根拠なき断言を防ぐ)
- スコアを集計して数値化する(「なんとなく正しそう」を排除)
情報戦争で使われる手口の多くは「正しい事実と誤った事実を混ぜる」だ。全体の印象は正確に見えて、重要な部分だけ嘘を混入させる。原子分解はこれを防ぐ。
今後
CLIとして動くプロトタイプはできた。次はWeb UIとしてデプロイして、誰でも使えるようにする。
URL入力でニュース記事を丸ごとチェックできるようにもしたい。画像のディープフェイク検出も統合したい。
情報戦争は技術の問題でもあるが、最終的には「不確実性に耐える力」が防衛の核心だと思う。AIは「分からない」を言いやすくする設計にする——FactLensはそういうツールにしたい。
コードはオープンソースで公開予定。
FactLensは現在開発中。フィードバックはX(@yukihamada)まで。