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)
Me ajudou muito!!! Muito obrigado!!!
ResponderExcluirEm primeiro lugar gostaria de agradecer pelo tutorial.
ResponderExcluirAo tentar rodar o segmento TermDocumentMatrix... aparecia o erro abaixo
TermDocumentMatrix(wc_corpus2, control = list(minWordLength = 3))
Error: inherits(doc, "TextDocument") is not TRUE
Solucionei introduzindo a seguinte linha antes do comando
wc_corpus <- tm_map(wc_corpus, PlainTextDocument)
O restante funcionou direitinho.
Em primeiro lugar gostaria de agradecer pelo tutorial.
ResponderExcluirAo tentar rodar o segmento TermDocumentMatrix... aparecia um erro
TermDocumentMatrix(wc_corpus2, control = list(minWordLength = 3))
Error: inherits(doc, "TextDocument") is not TRUE
Solucionei introduzindo a seguinte linha antes do comando
wc_corpus <- tm_map(wc_corpus, PlainTextDocument)
O restante funcionou direitinho
Obrigado, Jobenil.
ResponderExcluirFica registrado a sua correção.
Grande abraço
Pedro
ResponderExcluirGrato pelas dicas. Conhece algum outro material de preferência em português sobre mineração de texto com R?
grato
Oi Flávio,
ExcluirInfelizmente não conheço nenhum material em português sobre o assunto.
Grande abraço
Olá pessoal, estou com dificuldade para achar a correlação entre dois termos do mesmo documento, se alguém tivar uma resposta, ficarei grato. Obrigado
ResponderExcluirExcelente....
ResponderExcluirTem como fazer isso se for um documento em PDF?
ResponderExcluirOlá,
ResponderExcluirMuito obrigada pelas dicas. No entanto, estou com um probleminha: não foi possível encontrar a função "plot.new". Como posso resolver?
Desde já, obrigada pelo auxílio!
Parabéns pela postagem. Tenho interesse no assunto e estou com dificuldades de fazer a leitura de vários textos de uma pasta, poderia me ajudar com isso?
ResponderExcluir