AI味検出とクリーニングワークフロー
トリガー条件
- オンライン小説の本文を執筆後、公開前に AI 味を自己チェックしたい場合(トマト/起点などのプラットフォーム検出+読者の印象)
- ユーザーが「AI 味を除去」「AI 味検出」を要求した場合
- AI 生成テキストを納品する前に「AI と判定されない」ことを確認したい場合
一、検出ツール
python ai_check.py <ファイルパス> [deepseek|doubao]
- deepseek(デフォルト):無料で高速、詳細な出力(AI 味%/リスクレベル/疑わしい文とその理由/修正提案)——一次スクリーニング+位置特定に使用
- doubao:豆包 Seed 2.1 Pro、従量課金制、安定した出力——最終確認に使用
- スコア:AI 味 0-100%;パープレキシティ(語彙が標準的すぎて流暢かどうか)+ バースト性(リズムが平坦すぎないか)
- リスクライン:>60% = 高リスク(プラットフォーム拒否/ランク低下)/ 30-60% = 中リスク(クリーニングが必要)/ <30% = 安全
二、⚠️ ランダム性の落とし穴(2026-08-10 実測、最も重要!)
同一テキスト、同一モデルで連続検出すると結果が大きく変動する——単一の結果は信頼できない!
実測事例(『問骨』黄金三章):
| ファイル | 初回 | 再テスト | 豆包確認 |
|---|---|---|---|
| 第1章初稿 | 78% | — | クリーニング後22% |
| 第2章クリーニング後 | 78% | 18% | 15% |
| 第3章クリーニング後 | 78% | 25% | 20% |
判定ルール(誤判定防止):
- 単一回 >60% すぐに判定しない——すぐに同一スクリプトで1回再テストする
- 最終判定は Doubao Seed 確認 を基準とする(実測で最も安定)
- DeepSeek は一次スクリーニング+疑わしい文の位置特定に、Doubao は最終確認に使用
- 同一ファイルの再テスト <30% かつ Doubao も <30% → 安全と判定
- クリーニング後は必ず二重モデルで再テストし、単一結果を信用しない
三、クリーニングフロー(基準超過時の対処)
- 模擬人深改(最も効果的):「老刀」スタイルの具体的な人間ペルソナで書き換える(multi-layer-simulated-human-writing スキルを参照)
- 実測:第1章 78% → 22% 大幅低下
- 深改の原則:短文/断片文、生活ノイズ(野次馬の罵声/携帯の着信音/タバコの香り)、「突然気づいた/思わず/あたかも」を削除、会話での割り込み/話題そらし、細部の「余分さ」、結末の謎はアクションに埋め込み、きれいな反転にしない
- クリーニング後は必ず二重モデルで再テスト(DeepSeek 一次スクリーニング+Doubao 確認)、<30% で納品
四、外部ツール調査結論(2026-08-10)
- GPTZero/ZeroGPT はアクセス可能だが中国語検出効果は限定的、無料枠が少ない
- 最適解 = 自前モデルマトリックス(DeepSeek 無料メイン検出 + Doubao Seed 確認):効果が高く、無料でバッチ処理可能、中国語オンライン小説に適合
五、一般的な AI 味の特徴(DeepSeek 検出器が識別するもの)
- 典型的な「詳細アンカー」書き方(「古い銅貨+青い斑点」型のステレオタイプなイメージ)
- 「突然気づいた/突然見えた」をサスペンスの転換に使う(文型がきれい)
- 「要約型反転」(前後の対称性がきれい、情報開示が直線的)
- 会話が道具のように情報を渡す
- 三連の並列/ダッシュの乱用/質問と回答の閉ループ
四B、⚠️ Doubao 確認における長文タイムアウト処理(2026-08-15 実測)
doubao モードで 2 万字以上の全文を検出するとタイムアウトする(Seed 2.1 Pro thinking モードは一語一語考え、全文が長すぎ、urllib timeout=240 で直接 TimeoutError):
- 解決策:分割検出——スクリプトで半分に分割(各半分 ~1.6 万文字)、それぞれに「フラグメント 1/2」ヒントを付けて実行、timeout ≥420、2 つの AI 味値の平均を取る
- DeepSeek メイン検出にはこの問題なし(高速)、Doubao 確認時のみ分割が必要
- 分割後、Doubao は段落レベルの確証(原文引用+理由)を提供し、DeepSeek より信頼性が高い
四C、⚠️ Doubao の重複指控は誇張される——重複検出はスクリプトで検証する必要あり(2026-08-15 実測)
Doubao 確認で「焼けた鉄の棒を飲み込んだように一字一句違わず 4 回出現」と言われたが、実際の全文では 1 回のみ;しかし「私は知っている、こんな日々は一日減っていく…」の三連並列テンプレートは確かに 3 回重複(語彙は変えても構造は同じ)。判定ルール:
- Doubao が示す具体的な重複回数は全面的に信用できない——先にスクリプト
t.count(キーワード)で確認してから結論を出し、Doubao の数字を直接引用しない - しかし構造の再利用指控は通常正しい——「私は知っている…たとえ…盗んだものだ」×3(一日/一秒/一晚、語彙のみ変更、構造は同じ)は本当の AI 味シグナル。検出時は名詞を除去した構造でマッチング(「私は知っている…たとえ…盗んだものだ」の骨格を保持、置き換えられた具象語は無視)、単なる正確な文字列マッチングを行わない
- 正確な文字列カウントが 0 でも重複がないとは限らない——本文に
\n\n改行が含まれる場合、段落全体のマッチングは 0 ヒットになる。まず空白を正規化して(re.sub(r'\s+','',t))から確認する - 抒情的な並列テンプレートの再利用 = 強力な AI 味の確証:同一の「私は知っている×3→でも私はまだ…→たとえ×3→たとえこの一X、盗んだものだ」構造が千余字内に 3 回出現するのは、AI 長文生成の「検証済み文型テンプレートの呼び出し」という典型的な欠陥
五B、コンテンツレベルの AI 痕跡 4 大特徴(2026-08-14 凌乾プロジェクト実測・文型より致命的)
検出時は項目ごとにスキャンし、該当すれば即 AI 疑惑と判定:
- 比喩の密集+同質化:数百字内に連続して同タイプの現代比喩(「期限切れの注文のように/督促のSMSのように/爆発的な注文通知音のように」連発)= AI 比喩生成機モード。人間はたまに一、二回使うだけで、連発しない
- 短い文の機械的なリズム:「三連短文—改行—会話—また短文」の均一なテンプレート感(AI は独立した短文段落を好むが、人間はそれを崩し、長文を挿入する)
- システムプロンプト【】のパターン:角括弧+専門用語(閾値/編制/呼び出し可能/起動)= AI システムフローテンプレート語
- 感情ラベル+動作ペアの定型化:各感情ポイントに象徴的な動作が対応(母親が押す/阿禾が爪を噛む/凌乾が歯を食いしばる——あまりに整然としている=感情リスト) その他:「~ではなく~だ」構文(「人の頭ではなく、布だ」「泣いているのではなく、火だ」)は典型的な AI 修辞——20 箇所以上密集すると露呈。各章に最も衝撃的な 2-3 箇所を残し、残りは直接叙述に変更
五C、人間らしさを高めるクリーニング 5 指示(AI 味 92% → 二重モデル安全圏、実戦で検証)
これに従ってクリーニングした後の実測:DeepSeek 92% → 45%(ぎりぎり)、Doubao 確認 10%(安全)——二重モデルの乖離処理:DeepSeek は保守的、Doubao は楽観的、中間値を取り、ぎりぎりならもう一ラウンドクリーニング:
- 比喩を分散:300 字あたり多くとも 1 つの現代生活比喩、残りは感覚的な詳細(温度/匂い/光/音/触感)に置き換え
- 短文のリズムを崩す:連続 3 つの短文の後に 15 字以上の長文を 1 つ挿入(心理/動作/環境)
- システムプロンプトを野性的に:【】と専門用語を削除し、具象的な描写に置き換える(「頭の中で何かが裂けた。井戸の縁に瓦罐が落ちたように、破片からかすれた声が聞こえた:血の生け贄、一人呼び出せる。」)
- 感情を対応させない:空白/逸脱/曖昧さを残し、感情ポイントごとに正確に着地させない
- 本物の毛羽立ちを加える:具体的な価格/人名/借金/言い間違い/環境ノイズ(「アームカバー9.9元2枚」「王おばさんが三百元借金して首吊り死んだ」)—— AI が模倣できない生活の細部は、AI 検出を防ぐ最も強力な特徴
五D、⚠️ クリーニング副作用の落とし穴(v3/v5 で 2 回踏んだ! 必ず修復を実行)
Kimi 文章スタイル変換/人間らしさを高めるクリーニングはテキスト形式を壊す可能性がある:
- 中国語の湾曲引用符が失われる(“”→素の直引用符