OSS · CLI em Python

rhythm-lens

O ritmo do texto vira monótono sem você perceber. Então meça.

O rhythm-lens mede o ritmo de Markdown em japonês, inglês e português: burstiness do comprimento das frases, variação de sílabas/moras, estrutura de parágrafos. Ele localiza seu documento nas distribuições medidas de dois papers publicados e responde em percentis, sem achismo. A língua é detectada automaticamente (use --lang para forçar).

Ver no GitHub Paper em japonês (DOI) → Paper cross-lingual (DOI) →

Demo no terminal: o rhythm-lens marca um rascunho gerado por IA com 4 das 4 métricas centrais na direção de IA, burstiness de caracteres no 1% inferior da distribuição humana, e depois aprova um artigo editado por humano com as 4 métricas na faixa humana.
Duas execuções reais: um rascunho gerado por IA cai com 4 das 4 métricas centrais na direção de IA; um artigo editado por humano passa com as 4 na faixa humana. Cada veredito cita sua linha de evidência.

As 4 métricas centrais

Os sete modelos medidos derivam na mesma direção nessas quatro. A direção é universal entre modelos, a magnitude depende do modelo. Os tamanhos de efeito vêm do paper.

Métrica Direção de IA d de Cohen
Burstiness (caracteres) mais baixo = monótono −0.96
Burstiness (moras) mais baixo = monótono −0.80
CV de frases por parágrafo mais baixo = uniforme −0.67
CV do comprimento de frase (caracteres) mais baixo = monótono −0.56

Cross-lingual desde a v0.2.0

Um paper de continuação repetiu o desenho em inglês e português, com corpora humanos pré-ChatGPT recém-coletados (853 posts do Dev.to, 403 posts do TabNews) contra 7 LLMs cada. A direção da monotonização se manteve nas 70 de 70 células modelo×métrica. Por isso o rhythm-lens traz baselines calibrados para três línguas, cada uma com sua própria distribuição congelada.

Língua Baseline humano d de burstiness (agregado) Métricas centrais d < 0
Japonês 696 artigos Qiita/Zenn −0,96 (por modelo, 3º paper)
Inglês 853 posts do Dev.to (2019–2022) −1,12 7/7 modelos
Português 403 posts do TabNews (2022) −1,03 7/7 modelos

A direção das métricas de ritmo porta entre línguas; só os limiares são recalibrados por língua. A exceção é a pontuação — a densidade de vírgulas inverte o sinal entre inglês (+) e português (−), então ela é um dialeto por língua, não um sotaque compartilhado.

De onde vêm os limiares

Nenhum número mágico ajustado na mão. Todos os limiares, distribuições e tamanhos de efeito são gerados de forma congelada a partir dos dados publicados do paper (Imoto 2026, DOI 10.5281/zenodo.21413035).

  • Lado humano: 696 artigos técnicos de Qiita/Zenn escritos entre 2020 e 2022, antes da assistência por LLM se popularizar
  • Lado IA: 350 documentos gerados por 7 LLMs (Claude 3 Haiku / Sonnet 4 / Opus 4 / GPT-3.5 Turbo / GPT-4o / GPT-OSS 20B / Llama 3.2 1B)
  • O arquivo de baseline pode ser regenerado deterministicamente dos CSVs públicos do repositório do paper, e o código de medição segue as mesmas definições, com os números conferidos contra o paper
  • A saída mostra, métrica por métrica, em que percentil da distribuição humana o seu documento está

Instalação

pipx install git+https://github.com/kenimo49/rhythm-lens

As dependências são o MeCab (mecab-python3 + unidic-lite, para japonês) e o pyphen (aproximação de sílabas para inglês/português). Sem LLM, sem chave de API, sem rede: totalmente local e determinístico.

Uso

Um arquivo entra, um veredito sai. Em artigos de tamanho comum a resposta é imediata.

rhythm-lens article.md          # métricas centrais + veredito com linha de evidência
rhythm-lens article.md --all    # todas as 12 métricas
rhythm-lens article.md --json   # saída legível por máquina para CI / hooks de editor

Relação com o natural-japanese

A ferramenta partiu do coji/natural-japanese (MIT). A observação daquele projeto, de que o cheiro de IA aparece mais no ritmo do que no vocabulário, virou o ponto de partida do paper, e o rhythm-lens segue as definições dele para burstiness, aproximação de moras e divisão de frases. github.com/coji/natural-japanese

natural-japanese rhythm-lens
Forma Agent Skill (um LLM lê e corrige) CLI determinístico (sem LLM)
Objetivo principal Corrigir o texto Medir e mostrar a evidência
Limiares Observação de prática Distribuições medidas publicadas (percentis)

Camadas complementares, sem rivalidade: meça com o rhythm-lens antes e depois de corrigir com o natural-japanese.

Limites

  • Três línguas têm baseline (ja/en/pt); outras línguas, incluindo o espanhol, ainda não têm distribuição calibrada
  • Calibrado no registro de blog técnico; romances, poesia e logs de chat seguem outras distribuições
  • Documentos com menos de 5 frases não são julgados (mesmo mínimo do paper)
  • O frontmatter YAML é removido antes da medição
  • A contagem de moras/sílabas é aproximada (UniDic para japonês, pyphen para en/pt); leia junto com as métricas por caracteres

Artigos relacionados

Ferramentas relacionadas para devs

Todos os produtos →

← Voltar para produtos