論文の実測分布で校正したリズム計測CLI「rhythm-lens」を公開して、自分の記事に当てたら⚠2つ食らった
今日、語彙指紋 vs リズム指紋の論文をZenodoに出しました。結論の1つはこうです。検出に効くのは語彙、執筆改善に効くのはリズム。
なら、道具にするべきはリズムの方です。
というわけで論文の計測コードをそのままCLIに切り出しました。rhythm-lensといいます。日本語Markdownの文長の揺れ・段落構造・burstinessを測り、あなたの文章が人間の分布のどこにいるかをパーセンタイルで返す道具です。MITで公開済み、依存はMeCabだけ、LLMもネットワークも使いません。
しきい値に根拠がある、が売りです
リズム系のlintはすでに存在します。起点をくれたcoji氏のnatural-japaneseがそうで、burstinessやモーラ近似の定義はそちらに準拠しました。
rhythm-lensの違いは1点だけです。しきい値が感覚値ゼロ。判定の基準になる分布は、論文で計測した人間696記事(LLM以前のQiita/Zenn技術記事)とAI 350文書(Claude 3世代×3 / GPT系×3 / Llama)の実測そのものを凍結して同梱しています。「burstinessが低い」と警告される代わりに、「あなたの−0.42は人間分布の下位14%、AI帯域です」と返ってくる。数字の出どころはDOI付きで辿れます。
もう1つ、先に宣言しておきます。これはAI検出器ではありません。論文の実測で人間/AI判別に効くのは語彙(AUC 0.998)で、リズムは0.897どまり。しかもその相当部分は文書長の差に乗った信号です。リズム指標の価値は検出精度の側になく、少数で、人間が読めて、全モデル共通で、書き手が行動に移せるところにあります。だからこれは検出器のふりをしない、執筆フィードバックの計測器です。
公開初日、自分の記事に当てる
被験者第1号は、今日書いたばかりの論文解説記事にしました。AIのリズムの単調さを論じた記事です。これが引っかかったら相当に格好悪い。
$ rhythm-lens japanese-ai-smell-vocabulary-vs-rhythm-fingerprints.md
burstiness (文字) -0.291 下位35%
burstiness (モーラ) -0.323 下位20% ⚠ AI方向 (AI中央値 -0.354)
段落あたり文数のCV 0.432 下位14% ⚠ AI方向 (AI中央値 0.471)
文長CV (文字) 0.549 下位35%
総合: ⚠ 中核4指標のうち2つがAI方向です (単調化の兆候)
食らいました。
中核4指標のうち2つがAI方向。皮肉としては上出来です。
言い訳をすると、あの記事はAIの文章観察を長くやってきた人間とAIの共同執筆で、語彙側の癖は徹底的に避けていました。それでもリズムには出る。段落を2〜4文で刻む癖と、音数の揃った文を並べる癖は、内容をどれだけ工夫しても計測器には映ります。まさに論文で「全モデル共通の訛り」と呼んだ現象を、自分の記事で再演していたわけです。
どう直したか
やったことは4箇所の編集だけです。意味は1文字も変えていません。
- 「やるしかない。」を1文だけの段落として独立させた
- 「結果、AIの文章は本当に単調でした。」も同じく独立させた
- 2文の段落と3文の段落を1つに併合して、5文の大きい段落を作った
- 判別結果の直後に「完敗です。」という3秒で読み終わる段落を足した
つまり、段落サイズの振れ幅を広げ、極端に短い文を混ぜた。それだけです。
| 指標 | 修正前 | 修正後 |
|---|---|---|
| burstiness(モーラ) | −0.323(下位20%)⚠ | −0.299(下位28%) |
| 段落あたり文数のCV | 0.432(下位14%)⚠ | 0.505(下位27%) |
| burstiness(文字) | −0.291(下位35%) | −0.280(下位38%) |
| 文長CV(文字) | 0.549(下位35%) | 0.562(下位38%) |
総合判定は「✓ 中核4指標すべて人間帯域です」に変わりました。編集にかかった時間は5分。語彙の癖を直すのは800字単位の頻度管理になって人間には実行不能ですが、リズムは段落の切り方だけで動く。論文で「執筆改善に効くのはリズム」と書いた意味を、自分で体感した格好です。
この記事は通っているのか
当然の疑問だと思います。書き終えた時点の本記事の計測結果を、そのまま貼ります。
$ rhythm-lens rhythm-lens-cli-own-article-2-warnings.md
総合: ✓ 中核4指標すべて人間帯域です
短い段落と長い段落を意図して混ぜながら書きました。読みながら「段落の長さがばらばらだな」と感じた方がいたら、それが計測に映っているリズムです。
使い方
pipx install git+https://github.com/kenimo49/rhythm-lens
rhythm-lens article.md # 人間向けレポート
rhythm-lens article.md --json # CI/エディタ連携用
5文未満の文書は判定対象外です。判定は技術ブログのレジスタで校正しているので、小説や詩に当てると分布がずれます。詳細な制約はREADMEにまとめました。
- リポジトリ: github.com/kenimo49/rhythm-lens
- 根拠の論文: 10.5281/zenodo.21413035
計測の道具を作ると、最初に刺さるのは自分です。刺さった数だけ文章が良くなるなら、安い出費だと思っています。
この記事は役に立ちましたか?