Nesse post daremos continuidade ao que já vimos em posts anteriores como Text Mining com kernels string no R - Parte 1 e Text Mining com kernels string no R - Parte 2. Nessa etapa, vamos tentar reconhecer o padrão das informações prestadas pela Petrobras de 2006 até o primeiro trimestre 2014, para isso, considere os seguintes pacotes:
1 2 3 4 | #Habilita as bibliotecas necessárias library (tm) library (wordcloud) library (Rstem) |
Vamos trabalhar com os textos informados pela Petrobras, os quais podem ser obtidos nesse link. Salve esses arquivos em alguma pasta do seu computador, como por exemplo, C:\Text Mining. Em seguida, precisamos transformar os arquivos em PDF para o formato TXT, o qual é possível de ser lido pelo R:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #Seleciona o arquivo de texto a ser minerado dest<- "C:\\Text Mining\\2006 - 1T.pdf" #Executa o programa que converte pdf em txt exe<- "C:\\Program Files\\xpdfbin-win-3.03\\bin64\\pdftotext.exe" system ( paste ( "\"" , exe, "\" \"" , dest, "\"" , sep= "" ), wait= F) #Cria o arquivo no formato txt filetxt<- sub ( ".pdf" , ".txt" , dest) #Lê os dados do arquivo txt<- readLines (filetxt, warn= FALSE ) #Deixa tudo minúsculo txt<- tolower (txt) #Remove algumas expressões regulares txt<- removeWords (txt, c ( "\\f" , stopwords ( "portuguese" ))) #Cria os objetos no formato corpus corpus<- Corpus ( VectorSource (txt)) #Remove a pontuação corpus<- tm_map (corpus,removePunctuation) #Remove os números corpus<- tm_map (corpus,removeNumbers) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #Coloca os textos na forma de Matriz tdm<- TermDocumentMatrix (corpus) m<- as.matrix (tdm) #Cria um data.frame com a frequência das palavras d<- data.frame (freq= sort ( rowSums (m), decreasing = TRUE )) #Coloca as palavras nas colunas d$word <- row.names (d) d$stem<- wordStem (d$word, language= "portuguese" ) #Remove as palavras muito grandes d<- d[ nchar ( row.names (d))<20,] #Agrega as frequências das palavras agg_freq<- aggregate (freq ~stem, data = d, sum) agg_word<- aggregate (word ~stem, data =d, function (x) x[1]) #Une os dados de frequência e palavras d<- cbind (freq = agg_freq[,2], agg_word) #Ordena as palavras pela frequência d<- d[ order (d$freq,decreasing = TRUE ),] #1 Trimestre 2006 d$Trimestre<- "1t2006" d$Retorno<-0.03789927 #Retorno do 2t2006 |