WordCloud no R – SER

PGloO2Y

Você já viu em algum web site, um conjunto de palavras sem ordem e com tamanhos diferentes? Acredito que sim.  Hoje em dia é bem comum e extremamente eficiente em ajudar os internautas a pesquisarem conteúdos no site em questão ou simplesmente mostrar as palavras mais pesquisadas no sítio.

Sabemos que o R é uma linguagem cientifica e na maioria das vezes é difícil levar algumas coisas para a web. No entanto a motivação para esse post não se trata de levar seu trabalho no R para a internet em aplicações web e sim mostrar que é possível criar tagclouds com a linguagem.

Podemos criar as chamadas “Nuvens de palavras” com conteúdos de arquivos csv, com artigos do New York times e até com hashtags do twitter, entre outros.

Antes de começarmos, certifique-se de que seu R esteja na versão mais recente.

Precisaremos de alguns pacotes! Vamos a eles:

  • Tm (Estrutura para aplicações de mineração de texto );
  • SnowballC (Uma interface para a biblioteca “R libstemmer C ” que implementa comparações de vocabulários. Línguas suportadas atualmente: Dinamarquês, Holandês, Finlandês, Francês, Alemão, Húngaro, Italiano, Norueguês, Português, Romeno, Russo, Espanhol, Sueco, Turco e Inglês.)
  • Wordcloud (Pacote para a criação de “Nuvens de palavras”)

 

Instalando e ativando os pacotes:


install.packages("tm")
install.packages("SnowballC")
install.packages("wordcloud")
library(tm)
library(SnowballC)
library(wordcloud)

 

Lendo o arquivo que servirá de insumo para a wordcloud. (disponível em “Banco de dados” na guia de Videoaulas). Caso tenha dúvidas ao fazer a leitura do arquivo, clique aqui:


aux<- read.csv2("http://www.estatisticacomr.uff.br/wp-content/uploads/
2015/07/acidentes.csv")

Primeiro, precisamos criar um corpus:

auxCorpus <- Corpus(VectorSource(aux))

Em seguida, vamos converter o corpus em um documento de texto simples.

auxCorpus <- tm_map(auxCorpus, PlainTextDocument)

Então, vamos remover toda a pontuação e palavras irrelevantes. Stopwords são comumente usadas no português, como:  eu, meu e etc.

auxCorpus <- tm_map(auxCorpus, removePunctuation) 

auxCorpus <- tm_map(auxCorpus, removeWords, stopwords('pt')) 

Em seguida iremos verificar as palavras e seus sinônimos (Ex: Aprendizagem -> aprender, caminhou -> caminhada, etc.). Isto irá garantir que as diferentes formas da palavra em questão serão convertidos para a mesma forma e plotadas apenas uma vez no wordcloud.

auxCorpus <- tm_map(auxCorpus, stemDocument)

Agora, criamos a wordcloud

wordcloud(auxCorpus,max.words=50,colors=c("blue","red"))

Em “max.words”  delimitamos o número de palavras que serão plotadas, tal argumento é interessante caso você esteja trabalhando com um arquivo muito grande, com muito conteúdo.

No script acima, usamos um arquivo de dados com pouca informação. Como exercício, pegue um texto realmente grande e faça o procedimento descrito acima e brinque com os gráficos. Dando uma olhada no index desse pacote você poderá conhecer melhor os argumentos, o que pode mudar e etc.

 

Esse post é oferecido pelo SER, participe do próximo!

ser-versao2

Seminário Internacional de Estatística com R

 

 

 

Comments

comments

Esta entrada foi publicada em Pacotes e marcada com a tag , . Adicione o link permanente aos seus favoritos.

Deixe uma resposta