sexta-feira, 24 de maio de 2019

Machine Learning e a nuvem de palavras


Geralmente lemos textos da forma tradicional, ou seja, palavra encadeada de outra palavra e linha por linha. No entanto, existem diversas outras formas de ler e compreender o conteúdo de algum texto.
Atualmente, a técnica do “machine learning” (aprendizado de máquina, em português) é uma forma de ensinar o computador a ler, solicitando dele expressões gráficas de seu aprendizado.

Seu objetivo é apreender aspectos do texto que não foram compreendidos à priori com uma leitura tradicional. Nesta última, conseguimos compreender o sentido geral e algumas especificidades do texto lido. Já com o aprendizado das máquinas podemos explorar o potencial do conteúdo que não foi compreendido na leitura prévia.
A nuvem de palavras é um instrumento utilizado para a visualização da relação quantitativa entre as palavras. Para criação da nuvem de palavras, é necessário a utilização do programa R, temos que instalar e carregar alguns pacotes como: dplyr ,tm, tidyr, tidytext e o wordcloud.

require(tm)
require(tidytext)
require(tidyr)
require(dplyr)
require(wordcloud)

Após instalar e carregar os pacotes, passamos à correção e limpeza dos dados. Em nosso exercício usaremos a lista de dias e feriados do calendário, disponível em “https://www.calendarr.com/brasil/feriados-2019/”.

y <- b="" feriado="" vetor="">

Desses dados, foram removidos do texto geral as seguintes expressões: Dia, Internacional, Mundial, Nacional, Aniversário, Santo, Santa, Senhora, Brasileiro e Brasileira. Essas palavras geram um viés para a nossa amostra. Com sua exclusão, podemos verificar mais profundamente a relação quantitativa das palavras.
Com os dados limpos e harmonizados, seguimos à criação de um plano de informação no qual cada registro aparece associado ao número “1”.

texto <- line="1," text="t)</b" tibble="">

A função “unnest_tokens “ alocar cada palavra do texto, tendo duas colunas:  uma coluna com o valor “1” e a outra com a palavra do texto.

texto <- texto="">% unnest_tokens(word,text)

A função “stop_words” é um algoritmo léxico que contém o conjunto de palavras da língua e serve para excluir outras palavras como conjunções, artigos entre outros termos do texto.

data(stop_words)
texto <- texto="">% anti_join(stop_words)

 Ainda é necessária a união do texto proveniente dos calendários com o “stop words” e da estipulação do peso, através da função “count”, para cada palavra dentro do texto.

           t_ texto <- texto="">% count(word,sort = TRUE) 

Outro passo para a criação da nuvem é a criação de um “Corpus”, usando a função “VectorSource”.  Com o pacote “tm” fazemos alterações pontuais no texto, como remover pontuação, numerações, espaços duplos  e aplica uma lista de léxicos da língua portiguesa

corpo <- o:p="" texto="">
corpus <- corpo="" corpus="" ectorsource="" o:p="" word="">
corpus <- corpus="" o:p="" tm_map="" tolower="">
corpus <- corpus="" o:p="" removepunctuation="" tm_map="">
corpus <- corpus="" o:p="" removenumbers="" tm_map="">
corpus <- corpus="" o:p="" stripwhitespace="" tm_map="">
corpus <- b="" corpus="" function="" portuguese="" removewords="" stopwords="" tm_map="" x="">

Por fim, na criação da nuvem de palavras temos que usar o “corpus” criado e definir seus parâmetros como número mínimo de palavras, ordem do texto na nuvem.

wordcloud(corpus, min.freq = 1000, random.order = FALSE, random.color = FALSE, rot.per = F, colors = brewer.pal(name = "Reds", n = 5), ordered.colors = FALSE, use.r.layout = FALSE, fixed.asp = TRUE)

Nenhum comentário: