Linter de voz para português brasileiro. Aponta slop de IA por eixo. Não detecta autoria.
Linter de voz para português brasileiro. Aponta trechos de slop de IA (texto genérico, requentado, traduzido do inglês, sem voz) por eixo, igual o ESLint aponta código.
Uma régua que você roda no seu texto e que diz, por eixo, o que está genérico: “isto tem 3 conectivos de tradução, 2 voz passiva e 1 clichê de IA”. Roda local e no seu CI, em cima de Vale.
Não detecta autoria de IA. A pergunta aqui é “vale a pena ler?”, não “quem escreveu?”.
Os detectores de autoria (GPTZero, Turnitin AI) têm viés comprovado contra quem escreve simples ou não é nativo, e foram desligados por várias universidades. O gororoba foge disso de propósito. Slop é propriedade do texto, medível e acionável. Autoria não é. Tem IA bem usada que sai limpa, e tem gente escrevendo gororoba pura sem máquina nenhuma.
Isto é a saída real de vale tests/gororoba.md, não um mockup. O fixture sujo entra, o
linter aponta cada trecho com o eixo, a regra e a severidade:
3:1 warning [cliche-ia] 'No mundo de hoje': abertura de garganta limpa.
3:38 warning [conectivo-traducao] 'vale ressaltar que': conectivo de tradução.
4:50 warning [voz-passiva] 'foi observado': voz passiva ou impessoal.
8:10 error [cliche-ia] 'de tirar o fôlego': clichê de IA. Corta.
8:28 suggestion [cliche-ia] travessão como recurso. Use vírgula, ponto ou dois pontos.
10:1 error [cliche-ia] 'Ótima pergunta': clichê de IA. Corta.
12:42 warning [voz-passiva] gerundismo de call center: use 'envio' no lugar de 'Vou estar enviando'.
✖ 5 errors, 16 warnings and 2 suggestions in 1 file.
O risco mortal de uma régua dessas é marcar mineirês ou fala popular como slop. O
fixture tests/voz-limpa.md trava isso. Texto de voz real entra e tem que sair com zero
alerta. Isto é a saída real de vale tests/voz-limpa.md:
✔ 0 errors, 0 warnings and 0 suggestions in 1 file.
A frase “Cê viu o trem que o sô falou, uai?” passa limpa. O CI quebra se algum sinal vazar pra cima dela. Isto roda a cada push, então não fica no campo da promessa.
Cada eixo é uma tag: o nome que aparece no alerta é o mesmo que você lê aqui.
| Eixo (tag) | O que pega |
|---|---|
conectivo-traducao |
vale ressaltar, nesse sentido, cabe ressaltar |
calco-traducao |
no final do dia, dito isso, posto isso |
voz-passiva |
foi observado, pode-se notar, constata-se que |
gerundismo |
vou estar enviando, vou estar mandando |
cliche-ia |
ótima pergunta, abertura de garganta limpa, travessão, paralelismo negativo |
alusao-vaga |
estudos mostram, especialistas afirmam, uma grande marca |
calco-traducao e alusao-vaga entram como suggestion (sinal mais fraco, falso
positivo maior: nomear a fonte nem sempre cabe, tipo texto sob NDA); os outros como
warning. Ritmo, brasilidade e densidade ficam pra depois. São subjetivos e baixam a
concordância entre anotadores. A v0 fica nos 6 eixos objetivos.
Esta é a Camada 2, o linter. Funciona e roda em CI hoje. A Camada 1, o dataset público anotado por dois humanos com concordância (kappa) medida, ainda está em construção. Sem ela, isto é uma régua útil. Com ela, vira uma régua provada. Não vai virar “benchmark” antes de o kappa estar na mão.
| Camada | O que é | Estado |
|---|---|---|
| Camada 2 | o linter Vale, 5 eixos, CI | pronto, roda hoje |
| Camada 1 | dataset anotado + kappa por eixo | em construção, 0 trechos |
O cético tem um lugar pra cavar: o posicionamento responde de frente “isso é só regex?”, “e os falsos positivos?” e “por que confiar sem o kappa?”.
Vem da régua anti-slop papo-reto, que o autor já mantinha, e do stop-slop de Hardik Pandya (MIT), que ajudou a formalizar a ideia pro português. Licença MIT.
brew install vale
git clone https://github.com/renanburn/gororoba && cd gororoba
vale tests/gororoba.md