- A representação espaço vetor é utilizada por muitas técnicas em mineração de texto.
- As coordenadas dos documentos dependem das métricas usadas para construção da matriz de documentos e termos.
- As métricas mais adotadas.
04 de dezembro de 2018
library(tm) # Arquivo com uma lista contendo textos. load(file = "scripts/ufpr-news.RData") length(ufpr) str(ufpr[[1]]) # Para criar um data.frame da lista. L <- lapply(ufpr, FUN = "[", c("id_noticia", "ts_publicacao", "str_titulo")) L <- lapply(L, FUN = as.data.frame, stringsAsFactors = FALSE) da <- do.call(what = plyr::rbind.fill, args = L) # Encurta os nomes. names(da) <- gsub("^[^_]*_", "", names(da)) # Cria a variável dia da notícia como data. da$dia <- strptime(da$publicacao, "%Y-%m-%d") str(da)
# Pega apenas documentos de uma data. db <- subset(da, dia == "2017-03-24") cps <- VCorpus(VectorSource(x = db$titulo), readerControl = list(language = "pt", load = TRUE)) content(cps[[1]])
## [1] "Marta é aquela que lê"
content(cps[[4]])
## [1] "Feira de carreiras na UFPR tem entrada gratuita nos dois dias"
content(cps[[5]])
## [1] "Pezão defende cortar salário de professor da Uerj"
# Pré-processamento. cps <- tm_map(cps, FUN = content_transformer(tolower)) cps <- tm_map(cps, FUN = removePunctuation) cps <- tm_map(cps, FUN = removeNumbers) cps <- tm_map(cps, FUN = removeWords, words = stopwords("portuguese")) cps <- tm_map(cps, FUN = stripWhitespace) cps <- tm_map(cps, FUN = content_transformer(trimws)) content(cps[[1]])
## [1] "marta é lê"
content(cps[[4]])
## [1] "feira carreiras ufpr entrada gratuita dois dias"
content(cps[[5]])
## [1] "pezão defende cortar salário professor uerj"
apropos("^weight[A-Z]", ignore.case = FALSE)
## [1] "weightBin" "weightSMART" "weightTf" "weightTfIdf"
dtm <- DocumentTermMatrix(cps, control = list(weighting = weightTfIdf)) dtm
## <<DocumentTermMatrix (documents: 109, terms: 210)>> ## Non-/sparse entries: 746/22144 ## Sparsity : 97% ## Maximal term length: 14 ## Weighting : term frequency - inverse document frequency (normalized) (tf-idf)
nTerms(dtm)
## [1] 210
nDocs(dtm)
## [1] 109