- 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