OSS · Python CLI
rhythm-lens
文章のリズムは、気づかないうちに単調化する。だから測る。
rhythm-lensは日本語・英語・ポルトガル語Markdownのリズム (文長の揺れ・音節/モーラの振れ幅・段落構造) を計測し、2本の公開論文の実測分布の上であなたの文書がどこに位置するかをパーセンタイルで返すCLIです。言語は自動判定 (--langで明示指定も可)。感覚値ではなく実測です。
中核4指標
計測した全7モデルがこの4指標で同じ方向に動きます。方向はモデル普遍、程度はモデル依存。効果量は論文の実測値です。
| 指標 | AI方向 | Cohen's d |
|---|---|---|
burstiness (文字) | 低い = 単調 | −0.96 |
burstiness (モーラ) | 低い = 単調 | −0.80 |
段落あたり文数のCV | 低い = 均質 | −0.67 |
文長CV (文字) | 低い = 単調 | −0.56 |
v0.2.0から言語横断
続編の論文が、同じ設計を英語とポルトガル語で再実行しました。人間側はChatGPT以前のコーパス (Dev.to人気記事853本、TabNews全窓403本) を新たに収集し、各7 LLMと比較しています。単調化の方向は70/70の全セル (中核5指標×7モデル×2言語) で維持されました。そこでrhythm-lensは3言語ぶんの較正済みベースラインを同梱し、それぞれ独立した凍結分布を持ちます。
| 言語 | 人間ベースライン | pooled burstiness d | 中核指標 d < 0 |
|---|---|---|---|
| 日本語 | Qiita/Zenn 696本 | −0.96 | (モデル別、第3論文) |
| 英語 | Dev.to 853本 (2019〜2022) | −1.12 | 7/7モデル |
| ポルトガル語 | TabNews 403本 (2022) | −1.03 | 7/7モデル |
リズム指標の「方向」は言語を跨いで流用でき、較正が要るのはしきい値だけです。例外は句読点で、カンマ密度は英語 (+) とポルトガル語 (−) で符号が反転します。これは全モデル共通の「訛り」ではなく、言語ごとの「方言」です。
しきい値の出どころ
手調整のマジックナンバーはありません。全指標のしきい値・分布・効果量は、公開論文の実測データ (Imoto 2026, DOI 10.5281/zenodo.21413035) から凍結生成しています。
- 人間側: LLM以前 (2020〜2022年) のQiita/Zenn技術記事696本
- AI側: 7 LLM (Claude 3 Haiku / Sonnet 4 / Opus 4 / GPT-3.5 Turbo / GPT-4o / GPT-OSS 20B / Llama 3.2 1B) の生成350文書
- ベースラインファイルは論文リポジトリの公開CSVから決定的に再生成でき、計測コードは論文と同一定義 (数値一致を検証済み)
- 出力は指標ごとに、あなたの文書が人間分布のどこに位置するかをパーセンタイルで示す
インストール
pipx install git+https://github.com/kenimo49/rhythm-lens 依存はMeCab (mecab-python3 + unidic-lite、日本語用) とpyphen (英語・ポルトガル語の音節近似用) のみ。LLM不使用・APIキー不要・ネットワーク不要で、完全ローカルに決定的に動きます。
使い方
ファイルを渡すと判定が返ります。通常の記事長なら一瞬で終わります。
rhythm-lens article.md # 中核指標+根拠行つきの判定
rhythm-lens article.md --all # 全12指標を表示
rhythm-lens article.md --json # CI/エディタ連携向けの機械可読出力 natural-japanese との関係
本ツールの起点は coji/natural-japanese (MIT) です。「AI臭は語彙よりリズムに出る」という同プロジェクトの観察が論文の出発点になり、rhythm-lensのburstiness・モーラ近似・文分割の定義は同プロジェクトの方式に準拠しています。 github.com/coji/natural-japanese
| natural-japanese | rhythm-lens | |
|---|---|---|
| 形態 | Agent Skill (LLMが読んで直す) | 決定的CLI (LLM不使用) |
| 主目的 | 文章を直す | 測って根拠を示す |
| しきい値 | 実務観察ベース | 論文実測分布 (パーセンタイル) |
競合ではなく計測層です。natural-japaneseで直す前後にrhythm-lensで測る、という併用を想定しています。
制約
- ベースラインがあるのは3言語 (ja/en/pt)。スペイン語を含むその他の言語には較正済み分布がまだありません
- 判定は技術ブログのレジスタで校正済み。小説・詩・チャットログでは分布が異なります
- 5文未満の文書は判定対象外 (論文と同じ最小文数)
- YAML frontmatterは計測前に除去します
- モーラ/音節数は近似 (日本語はUniDic、en/ptはpyphen)。文字ベース指標と併読してください
関連記事
関連する開発ツール
- claude-shift 複数のClaude Codeアカウントを管理するツール。activeアカウントをCLIから切り替えつつ、Claude Codeが実際に読んでいる2ファイル認証(~/.claude/.credentials.json + ~/.claude.json)を両方同期。5時間枠と週次の使用率をアカウント横断でChrome拡張から見られる。
- opencut-mcp OpenCut classic を任意の MCP クライアントから操作する MCP サーバー。Playwright がエディタセッションを保持し、12 個のツールでタイムライン・メディアアセット・エクスポートパイプラインを公開。OpenCut classic の fork 向け。
- mcp-scorecard MCPサーバー用のプリフライトチェックCLI。ツールを1つも呼ばずに消費される受動トークン量、ユースケースの絞り込み、セキュリティ、命名衝突の4層でスコアカードを返します。
- 404 Games 404ページに置けるcanvasミニゲーム10本。有名エラーページへのオマージュ集。Vanilla JS・依存ゼロ・テーマ追従。当サイトの404で稼働中。