Ensaios: Remover Acentos e Desenvolver Lematização no R

Prof. Steven Dutt-Ross

2020/06/06 (updated: 2020-06-08)


Como remover caracteres especiais no R

exemplo<-"Hoje tem filezin de frango com pure de batata. Amanhã tem carne ensopada ou almondega de soja. Quarta linguiça e macarrão, e quinta coxa com sobrecoxa e FAROFA NATALINA. \U0001f385\U0001f3fbhttps://t.co/GhD1E1dzVm https://t.co/yKcdUj4v1Ā"
exemplo
## [1] "Hoje tem filezin de frango com pure de batata. Amanhã tem carne ensopada ou almondega de soja. Quarta linguiça e macarrão, e quinta coxa com sobrecoxa e FAROFA NATALINA. <U+0001F385><U+0001F3FB>https://t.co/GhD1E1dzVm https://t.co/yKcdUj4v1A"
chartr("áéíóúâêôã", "aeiouaeoa", exemplo)
## [1] "Hoje tem filezin de frango com pure de batata. Amanha tem carne ensopada ou almondega de soja. Quarta linguiça e macarrao, e quinta coxa com sobrecoxa e FAROFA NATALINA. <U+0001F385><U+0001F3FB>https://t.co/GhD1E1dzVm https://t.co/yKcdUj4v1A"
exemplo2<-chartr("áéíóúÁÉÍÓÚýÝàèìòùÀÈÌÒÙâêîôûÂÊÎÔÛãõÃÕñÑäëïöüÄËÏÖÜÿçÇ",
                 "aeiouaeiouyyaeiouaeiouaeiouaeiouaoaonnaeiouaeiouycc",exemplo)
exemplo2
## [1] "Hoje tem filezin de frango com pure de batata. Amanha tem carne ensopada ou almondega de soja. Quarta linguica e macarrao, e quinta coxa com sobrecoxa e FAROFA NATALINA. <U+0001F385><U+0001F3FB>https://t.co/GhD1E1dzVm https://t.co/yKcdUj4v1A"

limpeza do texto

# limpeza do texto
library(tm)
## Loading required package: NLP
#exemplo_corpus <- tmCorpus(exemplo)
exemplo_corpus<-exemplo
# exemplo_corpus <- corpus(exemplo)
# exemplo_corpus <- tm_map(exemplo_corpus, content_transformer(tolower))
# exemplo_corpus <- tm_map(exemplo_corpus, removePunctuation)
# exemplo_corpus <- tm_map(exemplo_corpus, removeNumbers)
# exemplo_corpus <- tm_map(exemplo_corpus, removeWords, stopwords("portuguese"))
# exemplo_corpus <- tm_map(exemplo_corpus, stripWhitespace)
# exemplo_corpus <- TermDocumentMatrix(exemplo_corpus)

exemplo_corpus_matrix <- as.matrix(exemplo_corpus)
palavras<-row.names(exemplo_corpus_matrix)

Lematização do texto

É preciso proceder com a lematização do texto. É necessário identificar e converter formas flexionadas das palavras para as suas versões dicionarizadas. Por exemplo, é preciso tomar as palavras comi, comemos. comeríamos, comia e transformá-las todas em comer.

O Blog do Marcos Nunes fez isso para a legenda de seriados. Funcionou muito bem.

# lemmatizacao
# fonte: https://marcusnunes.me/posts/analise-de-sentimentos-com-r-bojack-horseman-vs-brooklyn-99/
# obs - colocar no formato tidy antes de executar.

lemma_dic <- read.delim(file = "https://raw.githubusercontent.com/michmech/lemmatization-lists/master/lemmatization-pt.txt", header = FALSE, stringsAsFactors = FALSE)
names(lemma_dic) <- c("stem", "term")


for (j in 1:length(palavras)){
  comparacao <- palavras[j] == lemma_dic$term
  if (sum(comparacao) == 1){
    palavras[j] <- as.character(lemma_dic$stem[comparacao])
  } else {
    palavras[j] <- palavras[j]
  }
}