OSS · CLI en Python

rhythm-lens

El ritmo del texto se vuelve monótono sin que lo notes. Así que mídelo.

rhythm-lens mide el ritmo de Markdown en japonés, inglés y portugués: burstiness del largo de las frases, variación de sílabas/moras, estructura de párrafos. Ubica tu documento sobre las distribuciones medidas de dos papers publicados y responde en percentiles, sin corazonadas. El idioma se detecta automáticamente (usa --lang para forzarlo).

Ver en GitHub Paper en japonés (DOI) → Paper cross-lingual (DOI) →

Demo en terminal: rhythm-lens marca un borrador generado por IA con 4 de 4 métricas centrales en dirección de IA, burstiness de caracteres en el 1% inferior de la distribución humana, y luego aprueba un artículo editado por un humano con las 4 métricas en la banda humana.
Dos ejecuciones reales: un borrador generado por IA cae con 4 de 4 métricas centrales en dirección de IA; un artículo editado por un humano pasa con las 4 en la banda humana. Cada veredicto cita su línea de evidencia.

Las 4 métricas centrales

Los siete modelos medidos derivan en la misma dirección en estas cuatro. La dirección es universal entre modelos, la magnitud depende del modelo. Los tamaños de efecto vienen del paper.

Métrica Dirección de IA d de Cohen
Burstiness (caracteres) más bajo = monótono −0.96
Burstiness (moras) más bajo = monótono −0.80
CV de frases por párrafo más bajo = uniforme −0.67
CV del largo de frase (caracteres) más bajo = monótono −0.56

Cross-lingual desde la v0.2.0

Un paper de continuación repitió el diseño en inglés y portugués, con corpus humanos pre-ChatGPT recién recolectados (853 posts de Dev.to, 403 posts de TabNews) contra 7 LLMs cada uno. La dirección de la monotonización se mantuvo en las 70 de 70 celdas modelo×métrica. Por eso rhythm-lens incluye baselines calibrados para tres idiomas, cada uno con su propia distribución congelada.

Idioma Baseline humano d de burstiness (agregado) Métricas centrales d < 0
Japonés 696 artículos de Qiita/Zenn −0,96 (por modelo, 3er paper)
Inglés 853 posts de Dev.to (2019–2022) −1,12 7/7 modelos
Portugués 403 posts de TabNews (2022) −1,03 7/7 modelos

La dirección de las métricas de ritmo se transfiere entre idiomas; solo los umbrales se recalibran por idioma. La excepción es la puntuación: la densidad de comas invierte el signo entre inglés (+) y portugués (−), así que es un dialecto por idioma, no un acento compartido.

De dónde salen los umbrales

Ningún número mágico ajustado a mano. Todos los umbrales, distribuciones y tamaños de efecto se generan de forma congelada desde los datos publicados del paper (Imoto 2026, DOI 10.5281/zenodo.21413035).

  • Lado humano: 696 artículos técnicos de Qiita/Zenn escritos entre 2020 y 2022, antes de que la asistencia por LLM fuera común
  • Lado IA: 350 documentos generados por 7 LLMs (Claude 3 Haiku / Sonnet 4 / Opus 4 / GPT-3.5 Turbo / GPT-4o / GPT-OSS 20B / Llama 3.2 1B)
  • El archivo de baseline se puede regenerar de manera determinística desde los CSVs públicos del repositorio del paper, y el código de medición sigue las mismas definiciones, con los números verificados contra el paper
  • La salida muestra, métrica por métrica, en qué percentil de la distribución humana está tu documento

Instalación

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

Las dependencias son MeCab (mecab-python3 + unidic-lite, para japonés) y pyphen (aproximación de sílabas para inglés/portugués). Sin LLM, sin clave de API, sin red: totalmente local y determinístico.

Uso

Entra un archivo, sale un veredicto. Con artículos de largo normal la respuesta es inmediata.

rhythm-lens article.md          # métricas centrales + veredicto con línea de evidencia
rhythm-lens article.md --all    # las 12 métricas completas
rhythm-lens article.md --json   # salida legible por máquina para CI / hooks de editor

Relación con natural-japanese

La herramienta partió de coji/natural-japanese (MIT). La observación de ese proyecto, que el olor a IA aparece más en el ritmo que en el vocabulario, se volvió el punto de partida del paper, y rhythm-lens sigue sus definiciones de burstiness, aproximación de moras y división de frases. github.com/coji/natural-japanese

natural-japanese rhythm-lens
Forma Agent Skill (un LLM lee y corrige) CLI determinístico (sin LLM)
Objetivo principal Corregir el texto Medir y mostrar la evidencia
Umbrales Observación de práctica Distribuciones medidas publicadas (percentiles)

Capas complementarias, sin rivalidad: mide con rhythm-lens antes y después de corregir con natural-japanese.

Límites

  • Tres idiomas tienen baseline (ja/en/pt); otros idiomas, incluido el español, aún no tienen distribución calibrada
  • Calibrado en el registro de blog técnico; novelas, poesía y logs de chat siguen otras distribuciones
  • Los documentos con menos de 5 frases no se juzgan (el mismo mínimo del paper)
  • El frontmatter YAML se elimina antes de medir
  • El conteo de moras/sílabas se aproxima (UniDic para japonés, pyphen para en/pt); léelo junto a las métricas por caracteres

Artículos relacionados

Herramientas relacionadas para devs

Todos los productos →

← Volver a productos