Este relatório apresenta uma análise exploratória inicial de três conjuntos de dados textuais em inglês: blogs, notícias e tweets. O objetivo é compreender as características gerais dos textos antes de construir um modelo de predição de palavras.
Amostramos 10.000 linhas de cada ficheiro para tornar o processamento mais leve.
sample_size <- 10000
# Altere o caminho conforme necessário
blogs <- readLines("dados/final/en_US/en_US.blogs.txt", n = sample_size, warn = FALSE)
news <- readLines("dados/final/en_US/en_US.news.txt", n = sample_size, warn = FALSE)
twitter <- readLines("dados/final/en_US/en_US.twitter.txt", n = sample_size, warn = FALSE)
Resumo com o número de linhas, palavras, tamanho em memória e média de palavras por linha.
generate_summary <- function(text_data, name) {
lines <- length(text_data)
words <- sum(stri_count_words(text_data))
size_mb <- object.size(text_data) / (1024^2)
avg_words <- mean(stri_count_words(text_data))
data.frame(
Fonte = name,
Linhas = lines,
Palavras = words,
Tamanho_MB = round(size_mb, 2),
Média_Palavras_Linha = round(avg_words, 2)
)
}
resumo <- rbind(
generate_summary(blogs, "Blogs"),
generate_summary(news, "News"),
generate_summary(twitter, "Twitter")
)
resumo
## Fonte Linhas Palavras Tamanho_MB Média_Palavras_Linha
## 1 Blogs 10000 412805 2.8 bytes 41.28
## 2 News 10000 348070 2.6 bytes 34.81
## 3 Twitter 10000 126511 1.4 bytes 12.65
twitter_word_counts <- stri_count_words(twitter)
qplot(twitter_word_counts, bins = 30, main = "Distribuição de Palavras por Linha (Twitter)",
xlab = "Número de Palavras", ylab = "Frequência")
## Warning: `qplot()` was deprecated in ggplot2 3.4.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
O próximo passo será construir um modelo de predição de texto com
base em n-grams (sequências de 1, 2 ou 3
palavras).
Pretende-se usar a estratégia de “backoff” para prever
a próxima palavra caso não exista uma correspondência direta.
Este modelo será integrado num Shiny App simples, onde
o utilizador introduz texto e recebe sugestões de continuação.