Uma IA para ajudar você a escrever

Photo by Matan Segev from Pexels

E se criássemos uma inteligência artificial para revisar e criticar nossos textos? Melhor que ensinar as máquinas a jogar Xadrez, não? Ao menos para quem escreve.

Como engenheiro e cientista de dados, sempre quis destrinchar meus textos com as mesmas ferramentas que uso para analisar dados. Porém, nunca dediquei tempo para fazer isso.

Gosto do meu editor de texto (o Scrivener). Ele guarda algumas estatísticas do projeto e até faz categorizações gramaticais com a ferramenta de foco linguístico. Porém, sinto falta de algumas de análises mais sofisticadas do texto. Por isso, decidi fazer meu próprio ajudante de escrita, um sidekick para o meu editor de texto predileto. Como ele ainda é um embrião, sua primeira e única funcionalidade é:

Realce de palavras muito usadas na cena.

Sim, o clássico contador de palavras para começar! Quem é de computação certamente já esbarrou em um exemplo do famoso wordcount (em Hadoop, Spark ou outra ferramenta). O desafio não é programá-lo, mas o que fazer com ele.

Aqui eu vou ensinar a:

Colorir seu texto baseado na frequência das palavras.

Olha o resultado:

Se você não quer pôr as mãos na massa e programar, pode só conferir a ferramenta no link aqui:

https://werbos.herokuapp.com/conta_palavras

Porém, se você está interessado em entender as engenhocas por trás da ferramenta, aqui embaixo tem o tutorial em Python.

Photo by SwapnIl Dwivedi on Unsplash

Vamos sujar as mãos com um pouco de programação?

Por que programar? Lembre-se que no futuro todos deverão saber programar. Além de tudo, programar é expandir a mente. Então… por que não?

Se você não for familiar com programação em Python, sugiro procurar um tutorial antes de continuar com a leitura, pois não vou explicar conceitos de linguagens de programação nem vou explicar como instalar o seu ambiente de programação.

Eu uso a distribuição Python da Anaconda, mas você pode usar outro interpretador. Se for reproduzir o código desse artigo, sugiro também trabalhar em um ambiente virtual (virtual env ou conda env). Depois de criar e entrar na pasta do projeto, fiz assim:

As quatro linhas de comando aí em cima devem:

  1. Criar um ambiente virtual python dentro da pasta do seu projeto
  2. Ativar o ambiente virtual de desenvolvimento
  3. Instalar o biblioteca NLTK para o processamento de linguagem natural
  4. Instalar a biblioteca matplotlib para visualização de dados

Por que precisamos da NLTK?

Para quem não conhece, a NLTK é a biblioteca de processamento de linguagem natural mais popular no mundo Python. No nosso exemplo, ela vai nos ajudar a eliminar as palavras vazias (stopwords) e também com separação apropriada das sentenças em um conjunto de palavras (o processo conhecido como tokenização). Realmente não precisaríamos da NLTK nesse exemplo (é possível fazer tudo com python puro). Porém, como pretendo usar a NLTK para outras coisas em breve, achei melhor já utilizá-la.

E a Matplotlib?

Aqui a matplotlib só irá nos ajudar a colorir o texto. Ela tem um conjunto predefinido de mapeamento de cores (os colormaps) que é muito útil.

Passo 1: Separação dos Parágrafos

A ferramenta foi pensada para analisar uma cena completa. Portanto, vamos primeiro separar o texto em parágrafos, utilizando a separação de linha como delimitador:

A segunda linha do código acima, separa o conteúdo da variável text a cada vez que encontra o caractere (invisível) de quebra de linha

Passo 2: Tokenização

Pode parecer simples como fazer um novo split utilizando o caractere do espaço como separador. Porém, queremos também nos livrar aqui da pontuação e separadores como o hífen e o travessão. Por isso, vamos utilizar um separador específico da NLTK.

A variável paragraph_tokens guarda, para cada parágrafo, seu conjunto de tokens. O método word_tokenize da NLTK faz todo o trabalho para nós e retorna a lista de tokens do parágrafo.

Passo 3: Limpeza com remoção de Stopwords

Para cada token de cada parágrafo, vamos uniformizá-los (em letras minúsculas), remover símbolos indesejados (pontuações e caracteres espaciais) e ainda nos livrarmos das palavras vazias (stopwords).

Ao final desse laço, temos uma única lista de palavras relevantes do texto, todas em letras minúsculas, sem caracteres indesejados.

Passo 4: Contar a frequência de palavras

Essa é a parte fácil porque o Python tem uma estrutura de dados pronta para fazer isso. Então bastam estas linhas aqui embaixo:

Aqui, você já pode verificar as dez palavras mais comuns do texto, chamando o seguinte método:

Passo 5: Hora de colorir!

Para exibir o texto colorido, dependemos do meio onde o texto será visualizado. Eu optei por uma visualização HTML pois eu já planejava construir uma ferramenta Web. Sendo assim, o código a seguir reconstrói o texto original acrescentando marcadores em HTML que ajustam a cor de cada palavra para ser visualizado em um navegador.

Se você visualizar a string HTML acima em um navegador, verá seu texto colorido baseado na frequência das palavras. Você pode visualizar também em um Jupyter Notebook, utilizando o seguinte código:

Deixo aqui embaixo o código completo do exemplo acima, de uma forma mais fácil de copiar e colar.

Pronto! O que achou? Deixe seu comentário, sugestão, opinião, bata palmas, ou reclame no Twitter @escrevejonas.

Se você chegou até aqui, obrigado pela paciência e disposição :-)

Se estiver interessado em contribuir para o projeto, pode ir lá no github também: https://github.com/jonasfd/werbos

Até mais!

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store