Introdução

Usando o conceito de text mining para filtrar as palavras mais utilizadas no artigo: https://blog.dsacademy.com.br/10-livros-incriveis-para-iniciar-a-carreira-de-analista-de_dados/, é gerada uma nuvem dessas palavras ilustrando por meio de tamanho e cores as que mais se repetem no texto em questão.

Biblioteca

library(dplyr)
library(ggplot2)  
library(tidytext)  
library(rvest)  
library(stringr)  
library(wordcloud)
library(htmltools)
library(tm)
library(wesanderson)

Text Mining

1. O texto:

noticia="https://blog.dsacademy.com.br/10-livros-incriveis-para-iniciar-a-carreira-de-analista-de_dados/"

2. Extração e limpeza do texto (Mineração):

O texto passa por um processo que passa pela mudança do formato do arquivo original para tabela e limpeza do texto.

leitura <- read_html(c(noticia)) 
texto <-  leitura %>%
  html_nodes("p") %>%
  html_text() 
texto <- as.data.frame(texto)
transformar_texto <- tolower(texto)#tornar letras minúsculas
transformar_texto <- removePunctuation(transformar_texto)#remove pontos
transformar_texto <- removeNumbers(transformar_texto)#remover números
transformar_texto <- stripWhitespace(transformar_texto)#remover espaços
stopwords_pt <- c(stopwords("pt"),"o","é","do","ser", "nesse","mas")
leia<- removeWords(transformar_texto , stopwords_pt)

Frequência dos termos

Os termos encontrados no texto limpo que irá gerar a nuvem de palavras, tem suas frequências calculadas baseadas na proporção que se apresentam, com isso são ranqueadas as palavras mostrando os termos mais usados.

word.counts <- as.matrix(TermDocumentMatrix(leia))
word.freq <- sort(rowSums(word.counts),decreasing = TRUE)
head(word.freq)
##    dados    livro     data  análise analista      big 
##       51       19       17       14        9        7

Nuvem de palavras:

Após a transformção e mineração do texto é gerada a nuvem de palavras levando em conta uma ordem de cores e tamanhos para ilustrar quais palavras mais repetem.

Resultado:

wordcloud(leia,scale=c(4,0.5),max.words=20,random.order = TRUE,color=wes_palette("Royal1"))