Quão original é o seu parágrafo?

Jonas Dias
3 min readDec 27, 2019
Photo by Egor Kamelev from Pexels

Quando você usa uma palavra no seu texto, ela fica na sua memória recente e você quer usá-la outra vez, e depois mais uma vez… Pelo menos comigo, isso acontece. Acho difícil evitar tal erro, mas podemos detectá-lo automaticamente.

No meu artigo anterior, mostrei como fiz um contador de palavras para colorir textos de acordo com a frequência das palavras. A ferramenta está disponível gratuitamente em:

http://werbos.herokuapp.com/conta_palavras

Hoje, vou contar como estendi a ferramenta e usei a frequência das palavras para avaliar a originalidade do parágrafo. Olha como fica:

Medida de originalidade dos parágrafos dos dois primeiros capítulos de Dom Casmurro, de Machado de Assis.

Pausa para um aviso: Da forma como estou (arbitrariamente) definindo originalidade de um parágrafo…

…mais originalidade não quer dizer mais qualidade.

Muitas vezes, a repetição de alguns termos na cena é proposital e benéfica. O objetivo da ferramenta é dar maior visibilidade do fenômeno ao escritor, não criticá-lo. O gráfico acima pode ressaltar trechos que precisam de atenção e revisão mais cuidadosa, por exemplo.

A intuição do conceito que criei de originalidade é a seguinte:

Dada as palavras relevantes de um parágrafo, quantas delas aparecem apenas uma vez no texto em relação as que aparecem múltiplas vezes?

Um lembrete: palavras relevantes são as palavras que sobram após a remoção das stopwords, ou palavras vazias, tais como de, a, o que

Vamos imaginar que um parágrafo possui um conjunto P contendo N palavras relevantes. Também temos uma função (o nosso contador) que para cada palavra de P (pP) nos diz quantas vezes essa palavra aparece no texto completo. Vamos chamar essa função de freq. Por exemplo, se p é a palavra "aqui", freq("aqui") = 5 nos dois primeiros capítulos de Dom Casmurro.

Com essas notações, podemos definir originalidade da seguinte maneira:

Originalidade = 10 * N / ∑ freq(p) para todo p em P

Se todas as palavras relevantes de um parágrafo só tiverem aparecido uma única vez no texto inteiro, a originalidade será 10, pois a soma das frequências será igual à quantidade de palavras relevantes no parágrafo. Quanto mais a palavra aparecer no texto, maior ficará o somatório de frequências no denominador da fração, fazendo a originalidade do parágrafo cair.

Pode parecer um pouco complicado, mas na verdade é bem simples o que estamos fazendo aqui. Se quiser experimentar na ferramenta, cole trechos de textos na ferramenta online:

http://werbos.herokuapp.com/conta_palavras

Qualquer dúvida, sugestão, crítica ou reclamação, por favor deixe seu comentário ou me chame no twitter @escrevejonas. Daqui para baixo vou detalhar a implementação em python na ferramenta.

Detalhes da implementação

Vamos aos detalhes da programação. Para realizar a conta da originalidade, eu modifiquei a classe TextPiece para armazenar a lista de palavras relevantes para cada parágrafo. Com isso, a inicialização da classe ficou assim:

Dessa maneira, a lista relevant_words guarda, em cada posição, as palavras relevantes de cada parágrafo. Além disso, mantive o objeto counter que contabiliza a frequência absoluta de todas as palavras relevantes no texto inteiro. O counter é equivalente a função freq descrita na primeira parte desse artigo. Com essas duas variáveis, bastou implementar os dois seguintes métodos:

O primeiro método (privado) faz a contabilidade principal do número de palavras no parágrafo, dividido pela soma das frequências. O segundo método (público), apenas calcula a nota para todos parágrafos, multiplica por 10 e arredonda para duas casas decimais.

Embora eu esteja chamando de quality_vector no código, achei melhor utilizar o conceito de originalidade, como eu justifico no início desse artigo. A lista contendo o valor das originalidades de cada parágrafo é recebido pela aplicação Web que fornece os dados para o gráfico em javascript no navegador, utilizando a biblioteca Chart.js.

É isso, pessoal. Espero que tenham gostado. Qualquer dúvida ou sugestão, ficarei feliz em ouvi-las.

--

--

Jonas Dias

Head of data science @ Evergen and aspiring writer, living in Australia. Passionate about innovation and creativity.