A Mineração de texto (Text Mining), também denominada de extração de dados de textuais, ou ainda, análise de textual, refere-se ao processo de obter informação quantitativa a partir de um determinado texto.
Essas informações normalmente são obtidas por meio do reconhecimento de padrões e tendências através de aprendizagem estatística. A Mineração de Texto geralmente envolve o processo de estruturação do texto de entrada, reconhecimento dos padrões de dados estruturados, e, finalmente, a avaliação e interpretação dos resultados.
Nesse post mostraremos como realizar algumas das principais tarefas de Text Mining, as quais são úteis no estudo das mídias sociais com propósitos estratégicos gerenciais e de aplicações em marketing.
Análise textual descritiva: Wordcloud.
Uma nuvem de palavras ou Wordcloud é uma representação visual de dados de texto, normalmente usada para descrever os metadados de palavras-chave em textos específicos. Em geral é representada por palavras isoladas, e a importância de cada palavra é mostrada com um tamanho da fonte ou cor. Neste formato é fácil perceber rapidamente os termos mais proeminentes e sua importância relativa.
Considere por exemplo o Soneto da Felicidade:
#Guarda o texto a ser analisado no objeto "soneto" soneto<-"A Felicidade Tristeza não tem fim Felicidade sim A felicidade é como a pluma Que o vento vai levando pelo ar Voa tão leve Mas tem a vida breve Precisa que haja vento sem parar A felicidade do pobre parece A grande ilusão do carnaval A gente trabalha o ano inteiro Por um momento de sonho Pra fazer a fantasia De rei ou de pirata ou jardineira Pra tudo se acabar na quarta-feira Tristeza não tem fim Felicidade sim A felicidade é como a gota De orvalho numa pétala de flor Brilha tranqüila Depois de leve oscila E cai como uma lágrima de amor A felicidade é uma coisa boa E tão delicada também Tem flores e amores De todas as cores Tem ninhos de passarinhos Tudo de bom ela tem E é por ela ser assim tão delicada Que eu trato dela sempre muito bem Tristeza não tem fim Felicidade sim A minha felicidade está sonhando Nos olhos da minha namorada É como esta noite, passando, passando Em busca da madrugada Falem baixo, por favor Pra que ela acorde alegre com o dia Oferecendo beijos de amor"Uma vez armazenado o texto de interesse, podemos construir a Wordcloud da seguinte forma:
#Habilita as bibliotecas necessárias library(tm) #Text Mining library(wordcloud) #WordcloudUma vez habilitadas as bibliotecas tm e wordcloud, é necessário transformar o texto em um objeto próprio para análise:
#Transforma os dados de texto em vetores vs <- VectorSource(soneto) #Coloca no formato de Corpus do pacote tm temp<- Corpus(vs) #Faz o Word Cloud wordcloud(temp)O qual fornece a seguinte Wordcloud: Podemos melhorar a Wordcloud retirando as preposições e artigos desnecessários, tais como: "por", "de", "pelo", "a", etc. Essa etapa consiste em criar um objeto do tipo Corpus para o qual:
- Converte todas as palavras para minúsculo.
- Expande todas as contrações de palavra, por exemplo, "pelo" vira "per o".
- Remove as palavras "ruído".
- Remove as pontuações.
#Coloca tudo em minúsculo wc_corpus <- tm_map(temp, tolower) #Tira a pountuação e palavras ruído wc_corpus <- tm_map(wc_corpus, removePunctuation) wc_corpus <- tm_map(wc_corpus, removeWords, stopwords('portuguese')) #Cria a frequência de palavras td_mtx <- TermDocumentMatrix(wc_corpus, control = list(minWordLength = 3)) v <- sort(rowSums(as.matrix(td_mtx)), decreasing=TRUE) df <- data.frame(word=names(v), freq=v) wordcloud(df$word, df$freq, min.freq=3)Obtendo assim: Para deixar mais interessante a Wordcloud fazemos:
#Habilitando o pacote de cores library(RColorBrewer) pal2 <- brewer.pal(8,"Dark2") #Gera o word cloud wordcloud(df$word, df$freq, min.freq=1, max.words=Inf, random.order=FALSE, rot.per=.15, colors=pal2)