ROBÓTICA COMO RECURSO PARA O ENSINO: UM PERFIL DAS TESES E DISSERTAÇÕES PUBLICADAS ENTRE 2013 E 2022
1 Informações iniciais
1.1 Quantidade de Teses e Dissertações
#verificando por tipo de produção
resumo_producoes <- dados_filtrados %>%
filter(ID_SUBTIPO_PRODUCAO %in% c(1, 2)) %>%
group_by(ID_SUBTIPO_PRODUCAO) %>%
summarise(quantidade = n()) %>%
mutate(tipo_producao = case_when(
ID_SUBTIPO_PRODUCAO == 1 ~ "Tese",
ID_SUBTIPO_PRODUCAO == 2 ~ "Dissertação"
)) %>%
select(tipo_producao, quantidade) %>% # Selecionando apenas as colunas desejadas
arrange(desc(quantidade))
# Visualize o resumo
kable(resumo_producoes,
caption = "Resumo de Produções por Tipo",
label = "resumo_producoes",
col.names = c("Tipo de Produção", "Quantidade")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Tipo de Produção | Quantidade |
|---|---|
| Dissertação | 315 |
| Tese | 47 |
1.2 Publicações por ano (2013-2022)
Geral
# Definir a sequência completa de anos, assumindo que AN_BASE vai de 2000 a 2024 (ajuste conforme necessário)
# Sequência de anos completos
anos_completos <- seq(min(dados_filtrados$AN_BASE, na.rm = TRUE), max(dados_filtrados$AN_BASE, na.rm = TRUE))
# Resumo por ano (contando o total de registros por ano)
resumo_anos <- dados_filtrados %>%
group_by(AN_BASE) %>%
summarise(total = n(), .groups = "drop")
# Completar os anos ausentes com zero
resumo_anos_completos <- data.frame(AN_BASE = anos_completos) %>%
left_join(resumo_anos, by = "AN_BASE") %>%
replace_na(list(total = 0)) # Substitui os NA por 0, caso algum ano não tenha registros
# Criar o gráfico de linha com frequências
ggplot(resumo_anos_completos, aes(x = AN_BASE, y = total)) +
geom_line(color = "blue", size = 0.5) + # Linha azul
geom_text(aes(label = total), vjust = -0.5, color = "blue", size = 2.5) + # Frequências como rótulos
labs(
title = "Teses e Dissertações por Ano",
x = "Ano Base",
y = "Número de Produções"
) +
scale_x_continuous(
breaks = anos_completos, # Garante que todos os anos apareçam no eixo X
expand = c(0, 0) # Remove espaços extras no eixo X
) +
theme_minimal() + # Usando um tema minimalista
theme(
legend.position = "bottom", # Coloca a legenda na parte inferior
panel.grid = element_blank(), # Remove o fundo quadriculado
axis.text = element_text(size = 8) # Diminuir o tamanho das fontes dos eixos
)Seguimentado por área
# Criando o gráfico com uma linha para cada classificação da área de conhecimento
ggplot(dados_resumo, aes(x = AN_BASE, y = total, color = NM_AREA_CONHECIMENTO)) +
geom_line(size = 0.5) + # Linha para cada classificação
geom_text(aes(label = total), vjust = -0.5, size = 2.5) + # Rótulos para o total geral
scale_x_continuous(breaks = seq(min(dados_resumo$AN_BASE), max(dados_resumo$AN_BASE), by = 1)) +
labs(
title = "Evolução de Produções por Ano e Área de Conhecimento",
x = "Ano Base",
y = "Número de Produções"
) +
theme_minimal() + # Usando um tema minimalista
theme(
legend.position = "bottom", # Coloca a legenda na parte inferior
panel.grid = element_blank(), # Remove o fundo quadriculado
axis.text = element_text(size = 8) # Diminuir o tamanho das fontes dos eixos (se necessário)
)1.3 Instituições de Ensino e Programas mais frequentes
# Criando a coluna PROGRAMA_INSTITUICAO
dados_filtrados <- dados_filtrados %>%
mutate(PROGRAMA_INSTITUICAO = paste0(NM_PROGRAMA, " - ", NM_ENTIDADE_ENSINO))
# Agrupando variações de "ENSINO DE FÍSICA" e "PROFIS" no programa e na instituição
dados_filtrados <- dados_filtrados %>%
mutate(
PROGRAMA_UNIFICADO = ifelse(grepl("ENSINO DE FÍSICA", NM_PROGRAMA, ignore.case = TRUE), "ENSINO DE FÍSICA", NM_PROGRAMA),
INSTITUICAO_UNIFICADA = ifelse(grepl("PROFIS", NM_ENTIDADE_ENSINO, ignore.case = TRUE), "PROFIS", NM_ENTIDADE_ENSINO)
)
# Resumo por Programa e Instituição unificados (10 primeiros)
resumo_programa_instituicao <- dados_filtrados %>%
group_by(PROGRAMA_UNIFICADO, INSTITUICAO_UNIFICADA) %>%
summarise(quantidade = n(), .groups = "drop") %>%
arrange(desc(quantidade))%>%
slice_head(n = 10) # Seleciona apenas os 10 primeiros
# Tabela formatada
kable(resumo_programa_instituicao, caption = "Resumo de Produções por Tipo",
label = "resumo_producoes",
col.names = c("Programa de Pós-Graduação", "Instituição", "Quantidade")) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| Programa de Pós-Graduação | Instituição | Quantidade |
|---|---|---|
| EDUCAÇÃO E NOVAS TECNOLOGIAS | CENTRO UNIVERSITÁRIO INTERNACIONAL | 9 |
| INFORMÁTICA | UNIVERSIDADE FEDERAL DO RIO DE JANEIRO | 6 |
| EDUCAÇÃO MATEMÁTICA E TECNOLÓGICA | UNIVERSIDADE FEDERAL DE PERNAMBUCO | 5 |
| ENGENHARIA ELÉTRICA | UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE | 5 |
| ENSINO DAS CIÊNCIAS | UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO | 5 |
| FORMAÇÃO CIENTÍFICA, EDUCACIONAL E TECNOLÓGICA | UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ | 5 |
| CIÊNCIAS DA COMPUTAÇÃO | UNIVERSIDADE FEDERAL DE PERNAMBUCO | 4 |
| EDUCAÇÃO | FUNDAÇÃO UNIVERSIDADE DE PASSO FUNDO | 4 |
| EDUCAÇÃO | UNIVERSIDADE FEDERAL DE SÃO CARLOS | 4 |
| EDUCAÇÃO | UNIVERSIDADE FEDERAL DO OESTE DO PARÁ | 4 |
2 Palavras-chave mais frequentes nas produções
Geral
# Processamento das palavras-chave
palavras_frequentes <- dados_filtrados %>%
separate_rows(DS_PALAVRA_CHAVE, sep = ";") %>% # Divide a coluna em várias linhas por ";"
mutate(DS_PALAVRA_CHAVE = str_trim(DS_PALAVRA_CHAVE)) %>% # Remove espaços extras
mutate(DS_PALAVRA_CHAVE = case_when(
str_to_lower(DS_PALAVRA_CHAVE) %in% c("aprendizagem matemática","matemática","matemática.","educação matemática", "ensino de matemática") ~ "EDUCAÇÃO MATEMÁTICA",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("arduíno","arduino","arduino.", "arduíno.") ~ "ARDUÍNO",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias da informação e comunicação", "tecnologia", "tecnologias digitais") ~ "TECNOLOGIAS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias educacionais", "tecnologia educacional") ~ "TECNOLOGIAS EDUCACIONAIS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("robótica educacional.", "robótica móvel", "robótica industrial","robótica educacional", "robótica", "robótica pedagógica", "robótica educativa","robótica.") ~ "ROBÓTICA EDUCACIONAL",
TRUE ~ DS_PALAVRA_CHAVE # Mantém o termo original se não for um dos substituídos
)) %>%
count(DS_PALAVRA_CHAVE, sort = TRUE) %>% # Conta a frequência de cada termo
filter(str_detect(DS_PALAVRA_CHAVE, "[a-zA-Z]")) %>% # Filtra para manter apenas palavras alfabéticas
rename(palavra = DS_PALAVRA_CHAVE) # Renomeia a coluna para 'palavra'
# Remover linhas com frequências inválidas ou NA
palavras_frequentes <- palavras_frequentes %>%
filter(!is.na(n) & n > 0)
# Selecionar os 10 termos mais recorrentes
palavras_frequentes <- palavras_frequentes %>%
slice_max(n, n = 20)
# Removendo a palavra "robótica educacional"
palavras_frequentes <- palavras_frequentes %>%
filter(palavra != "ROBÓTICA EDUCACIONAL")
# Geração do gráfico de barras horizontal
grafico_palavras_chave <- ggplot(palavras_frequentes, aes(x = reorder(palavra, n), y = n)) +
geom_bar(stat = "identity", fill = "blue") + # Adicionando a cor azul às barras
geom_text(aes(label = n), hjust = -0.2, size = 3.5) + # Ajustando a posição do texto
coord_flip() + # Invertendo os eixos para barras horizontais
ggtitle("GRÁFICO DE BARRAS COM AS 20 PALAVRAS-CHAVE MAIS FREQUENTES") +
labs(y = "Frequência", x = "Palavras-chave") +
theme(axis.text.y = element_text(hjust = 1)) # Ajustando texto do eixo Y
# Exibindo o gráfico
print(grafico_palavras_chave)Área “Ensino”
# Processamento das palavras-chave considerando apenas registros de "ENSINO"
palavras_frequentes <- dados_filtrados %>%
filter(str_detect(NM_AREA_CONHECIMENTO, "ENSINO")) %>% # Filtra apenas os registros com "ENSINO" em NM_AREA_CONHECIMENTO
separate_rows(DS_PALAVRA_CHAVE, sep = ";") %>% # Divide a coluna em várias linhas por ";"
mutate(DS_PALAVRA_CHAVE = str_trim(DS_PALAVRA_CHAVE)) %>% # Remove espaços extras
mutate(DS_PALAVRA_CHAVE = case_when(
str_to_lower(DS_PALAVRA_CHAVE) %in% c("aprendizagem matemática","matemática","matemática.","educação matemática", "ensino de matemática") ~ "EDUCAÇÃO MATEMÁTICA",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("arduíno","arduino","arduino.", "arduíno.") ~ "ARDUÍNO",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias da informação e comunicação", "tecnologia", "tecnologias digitais") ~ "TECNOLOGIAS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias educacionais", "tecnologia educacional") ~ "TECNOLOGIAS EDUCACIONAIS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("robótica educacional.", "robótica móvel", "robótica industrial","robótica educacional", "robótica", "robótica pedagógica", "robótica educativa","robótica.") ~ "ROBÓTICA EDUCACIONAL",
TRUE ~ DS_PALAVRA_CHAVE # Mantém o termo original se não for um dos substituídos
)) %>%
count(DS_PALAVRA_CHAVE, sort = TRUE) %>% # Conta a frequência de cada termo
filter(str_detect(DS_PALAVRA_CHAVE, "[a-zA-Z]")) %>% # Filtra para manter apenas palavras alfabéticas
rename(palavra = DS_PALAVRA_CHAVE) # Renomeia a coluna para 'palavra'
# Remover linhas com frequências inválidas ou NA
palavras_frequentes <- palavras_frequentes %>%
filter(!is.na(n) & n > 0)
# Selecionar os 10 termos mais recorrentes
palavras_frequentes <- palavras_frequentes %>%
slice_max(n, n = 10)
# Removendo a palavra "robótica educacional"
palavras_frequentes <- palavras_frequentes %>%
filter(palavra != "ROBÓTICA EDUCACIONAL")
# Geração do gráfico de barras horizontal
grafico_palavras_chave <- ggplot(palavras_frequentes, aes(x = reorder(palavra, n), y = n)) +
geom_bar(stat = "identity", fill = "blue") + # Adicionando a cor azul às barras
geom_text(aes(label = n), hjust = -0.2, size = 3.5) + # Ajustando a posição do texto
coord_flip() + # Invertendo os eixos para barras horizontais
ggtitle("GRÁFICO DE BARRAS COM AS 10 PALAVRAS-CHAVE MAIS FREQUENTES") +
labs(y = "Frequência", x = "Palavras-chave") +
theme(axis.text.y = element_text(hjust = 1)) # Ajustando texto do eixo Y
# Exibindo o gráfico
print(grafico_palavras_chave)Área “Educação”
# Processamento das palavras-chave considerando apenas registros de "ENSINO"
palavras_frequentes <- dados_filtrados %>%
filter(str_detect(NM_AREA_CONHECIMENTO, "EDUCAÇÃO")) %>% # Filtra apenas os registros com "ENSINO" em NM_AREA_CONHECIMENTO
separate_rows(DS_PALAVRA_CHAVE, sep = ";") %>% # Divide a coluna em várias linhas por ";"
mutate(DS_PALAVRA_CHAVE = str_trim(DS_PALAVRA_CHAVE)) %>% # Remove espaços extras
mutate(DS_PALAVRA_CHAVE = case_when(
str_to_lower(DS_PALAVRA_CHAVE) %in% c("aprendizagem matemática","matemática","matemática.","educação matemática", "ensino de matemática") ~ "EDUCAÇÃO MATEMÁTICA",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("arduíno","arduino","arduino.", "arduíno.") ~ "ARDUÍNO",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias da informação e comunicação", "tecnologia", "tecnologias digitais") ~ "TECNOLOGIAS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias educacionais", "tecnologia educacional") ~ "TECNOLOGIAS EDUCACIONAIS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("robótica educacional.", "robótica móvel", "robótica industrial","robótica educacional", "robótica", "robótica pedagógica", "robótica educativa","robótica.") ~ "ROBÓTICA EDUCACIONAL",
TRUE ~ DS_PALAVRA_CHAVE # Mantém o termo original se não for um dos substituídos
)) %>%
count(DS_PALAVRA_CHAVE, sort = TRUE) %>% # Conta a frequência de cada termo
filter(str_detect(DS_PALAVRA_CHAVE, "[a-zA-Z]")) %>% # Filtra para manter apenas palavras alfabéticas
rename(palavra = DS_PALAVRA_CHAVE) # Renomeia a coluna para 'palavra'
# Remover linhas com frequências inválidas ou NA
palavras_frequentes <- palavras_frequentes %>%
filter(!is.na(n) & n > 0)
# Selecionar os 10 termos mais recorrentes
palavras_frequentes <- palavras_frequentes %>%
slice_max(n, n = 10)
# Removendo a palavra "robótica educacional"
palavras_frequentes <- palavras_frequentes %>%
filter(palavra != "ROBÓTICA EDUCACIONAL")
# Geração do gráfico de barras horizontal
grafico_palavras_chave <- ggplot(palavras_frequentes, aes(x = reorder(palavra, n), y = n)) +
geom_bar(stat = "identity", fill = "blue") + # Adicionando a cor azul às barras
geom_text(aes(label = n), hjust = -0.2, size = 3.5) + # Ajustando a posição do texto
coord_flip() + # Invertendo os eixos para barras horizontais
ggtitle("GRÁFICO DE BARRAS COM AS 10 PALAVRAS-CHAVE MAIS FREQUENTES") +
labs(y = "Frequência", x = "Palavras-chave") +
theme(axis.text.y = element_text(hjust = 1)) # Ajustando texto do eixo Y
# Exibindo o gráfico
print(grafico_palavras_chave)Área “Ciência da Computação”
# Processamento das palavras-chave considerando apenas registros de "ENSINO"
palavras_frequentes <- dados_filtrados %>%
filter(str_detect(NM_AREA_CONHECIMENTO, "CIÊNCIA DA COMPUTAÇÃO")) %>% # Filtra apenas os registros com "ENSINO" em NM_AREA_CONHECIMENTO
separate_rows(DS_PALAVRA_CHAVE, sep = ";|,") %>% # Divide a coluna em várias linhas por ";"
mutate(DS_PALAVRA_CHAVE = str_trim(DS_PALAVRA_CHAVE)) %>% # Remove espaços extras
mutate(DS_PALAVRA_CHAVE = case_when(
str_to_lower(DS_PALAVRA_CHAVE) %in% c("aprendizagem matemática","matemática","matemática.","educação matemática", "ensino de matemática") ~ "EDUCAÇÃO MATEMÁTICA",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("arduíno","arduino","arduino.", "arduíno.") ~ "ARDUÍNO",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias da informação e comunicação", "tecnologia", "tecnologias digitais") ~ "TECNOLOGIAS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias educacionais", "tecnologia educacional") ~ "TECNOLOGIAS EDUCACIONAIS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("robótica educacional.", "robótica móvel", "robótica industrial","robótica educacional", "robótica", "robótica pedagógica", "robótica educativa","robótica.") ~ "ROBÓTICA EDUCACIONAL",
TRUE ~ DS_PALAVRA_CHAVE # Mantém o termo original se não for um dos substituídos
)) %>%
count(DS_PALAVRA_CHAVE, sort = TRUE) %>% # Conta a frequência de cada termo
filter(str_detect(DS_PALAVRA_CHAVE, "[a-zA-Z]")) %>% # Filtra para manter apenas palavras alfabéticas
rename(palavra = DS_PALAVRA_CHAVE) # Renomeia a coluna para 'palavra'
# Remover linhas com frequências inválidas ou NA
palavras_frequentes <- palavras_frequentes %>%
filter(!is.na(n) & n > 0)
# Selecionar os 10 termos mais recorrentes
palavras_frequentes <- palavras_frequentes %>%
slice_max(n, n = 10)
# Removendo a palavra "robótica educacional"
palavras_frequentes <- palavras_frequentes %>%
filter(palavra != "ROBÓTICA EDUCACIONAL")
# Geração do gráfico de barras horizontal
grafico_palavras_chave <- ggplot(palavras_frequentes, aes(x = reorder(palavra, n), y = n)) +
geom_bar(stat = "identity", fill = "blue") + # Adicionando a cor azul às barras
geom_text(aes(label = n), hjust = -0.2, size = 3.5) + # Ajustando a posição do texto
coord_flip() + # Invertendo os eixos para barras horizontais
ggtitle("GRÁFICO DE BARRAS COM AS 10 PALAVRAS-CHAVE MAIS FREQUENTES") +
labs(y = "Frequência", x = "Palavras-chave") +
theme(axis.text.y = element_text(hjust = 1)) # Ajustando texto do eixo Y
# Exibindo o gráfico
print(grafico_palavras_chave)Área “Física”
# Processamento das palavras-chave considerando apenas registros de "ENSINO"
palavras_frequentes <- dados_filtrados %>%
filter(str_detect(NM_AREA_CONHECIMENTO, "FÍSICA")) %>% # Filtra apenas os registros com "ENSINO" em NM_AREA_CONHECIMENTO
separate_rows(DS_PALAVRA_CHAVE, sep = ";|,") %>% # Divide a coluna em várias linhas por ";"
mutate(DS_PALAVRA_CHAVE = str_trim(DS_PALAVRA_CHAVE)) %>% # Remove espaços extras
mutate(DS_PALAVRA_CHAVE = case_when(
str_to_lower(DS_PALAVRA_CHAVE) %in% c("aprendizagem matemática","matemática","matemática.","educação matemática", "ensino de matemática") ~ "EDUCAÇÃO MATEMÁTICA",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("arduíno","arduino","arduino.", "arduíno.") ~ "ARDUÍNO",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias da informação e comunicação", "tecnologia", "tecnologias digitais") ~ "TECNOLOGIAS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias educacionais", "tecnologia educacional") ~ "TECNOLOGIAS EDUCACIONAIS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("robótica educacional.", "robótica móvel", "robótica industrial","robótica educacional", "robótica", "robótica pedagógica", "robótica educativa","robótica.") ~ "ROBÓTICA EDUCACIONAL",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("ENSINO DE FÍSICA", "ENSINO DE FISICA") ~ "ENSINO DE FÍSICA",
TRUE ~ DS_PALAVRA_CHAVE # Mantém o termo original se não for um dos substituídos
)) %>%
count(DS_PALAVRA_CHAVE, sort = TRUE) %>% # Conta a frequência de cada termo
filter(str_detect(DS_PALAVRA_CHAVE, "[a-zA-Z]")) %>% # Filtra para manter apenas palavras alfabéticas
rename(palavra = DS_PALAVRA_CHAVE) # Renomeia a coluna para 'palavra'
# Remover linhas com frequências inválidas ou NA
palavras_frequentes <- palavras_frequentes %>%
filter(!is.na(n) & n > 0)
# Selecionar os 10 termos mais recorrentes
palavras_frequentes <- palavras_frequentes %>%
slice_max(n, n = 10)
# Removendo a palavra "robótica educacional"
palavras_frequentes <- palavras_frequentes %>%
filter(palavra != "ROBÓTICA EDUCACIONAL")
# Geração do gráfico de barras horizontal
grafico_palavras_chave <- ggplot(palavras_frequentes, aes(x = reorder(palavra, n), y = n)) +
geom_bar(stat = "identity", fill = "blue") + # Adicionando a cor azul às barras
geom_text(aes(label = n), hjust = -0.2, size = 3.5) + # Ajustando a posição do texto
coord_flip() + # Invertendo os eixos para barras horizontais
ggtitle("GRÁFICO DE BARRAS COM AS 10 PALAVRAS-CHAVE MAIS FREQUENTES") +
labs(y = "Frequência", x = "Palavras-chave") +
theme(axis.text.y = element_text(hjust = 1)) # Ajustando texto do eixo Y
# Exibindo o gráfico
print(grafico_palavras_chave)Área “Interdisciplinar”
# Processamento das palavras-chave considerando apenas registros de "ENSINO"
palavras_frequentes <- dados_filtrados %>%
filter(str_detect(NM_AREA_CONHECIMENTO, "INTERDISCIPLINAR")) %>% # Filtra apenas os registros com "ENSINO" em NM_AREA_CONHECIMENTO
mutate(DS_PALAVRA_CHAVE = str_replace_all(DS_PALAVRA_CHAVE, "\\.", ";")) %>%
separate_rows(DS_PALAVRA_CHAVE, sep = ";|,") %>% # Divide a coluna em várias linhas por ";"
mutate(DS_PALAVRA_CHAVE = str_trim(DS_PALAVRA_CHAVE)) %>% # Remove espaços extras
mutate(DS_PALAVRA_CHAVE = case_when(
str_to_lower(DS_PALAVRA_CHAVE) %in% c("aprendizagem matemática","matemática","matemática.","educação matemática", "ensino de matemática") ~ "EDUCAÇÃO MATEMÁTICA",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("arduíno","arduino","arduino.", "arduíno.") ~ "ARDUÍNO",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias da informação e comunicação", "tecnologia", "tecnologias digitais") ~ "TECNOLOGIAS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias educacionais", "tecnologia educacional") ~ "TECNOLOGIAS EDUCACIONAIS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("robótica educacional.", "robótica móvel", "robótica industrial","robótica educacional", "robótica", "robótica pedagógica", "robótica educativa","robótica.") ~ "ROBÓTICA EDUCACIONAL",
TRUE ~ DS_PALAVRA_CHAVE # Mantém o termo original se não for um dos substituídos
)) %>%
count(DS_PALAVRA_CHAVE, sort = TRUE) %>% # Conta a frequência de cada termo
filter(str_detect(DS_PALAVRA_CHAVE, "[a-zA-Z]")) %>% # Filtra para manter apenas palavras alfabéticas
rename(palavra = DS_PALAVRA_CHAVE) # Renomeia a coluna para 'palavra'
# Remover linhas com frequências inválidas ou NA
palavras_frequentes <- palavras_frequentes %>%
filter(!is.na(n) & n > 0)
# Selecionar os 10 termos mais recorrentes
palavras_frequentes <- palavras_frequentes %>%
slice_max(n, n = 8)
# Removendo a palavra "robótica educacional"
palavras_frequentes <- palavras_frequentes %>%
filter(palavra != "ROBÓTICA EDUCACIONAL")
# Geração do gráfico de barras horizontal
grafico_palavras_chave <- ggplot(palavras_frequentes, aes(x = reorder(palavra, n), y = n)) +
geom_bar(stat = "identity", fill = "blue") + # Adicionando a cor azul às barras
geom_text(aes(label = n), hjust = -0.2, size = 3.5) + # Ajustando a posição do texto
coord_flip() + # Invertendo os eixos para barras horizontais
ggtitle("GRÁFICO DE BARRAS COM AS 10 PALAVRAS-CHAVE MAIS FREQUENTES") +
labs(y = "Frequência", x = "Palavras-chave") +
theme(axis.text.y = element_text(hjust = 1)) # Ajustando texto do eixo Y
# Exibindo o gráfico
print(grafico_palavras_chave)Área “Matemática”
# Processamento das palavras-chave considerando apenas registros de "ENSINO"
palavras_frequentes <- dados_filtrados %>%
filter(str_detect(NM_AREA_CONHECIMENTO, "MATEMÁTICA")) %>% # Filtra apenas os registros com "ENSINO" em NM_AREA_CONHECIMENTO
mutate(DS_PALAVRA_CHAVE = str_replace_all(DS_PALAVRA_CHAVE, "\\.", ";")) %>%
separate_rows(DS_PALAVRA_CHAVE, sep = ";|,") %>% # Divide a coluna em várias linhas por ";"
mutate(DS_PALAVRA_CHAVE = str_trim(DS_PALAVRA_CHAVE)) %>% # Remove espaços extras
mutate(DS_PALAVRA_CHAVE = case_when(
str_to_lower(DS_PALAVRA_CHAVE) %in% c("aprendizagem matemática","matemática","matemática.","educação matemática", "ensino de matemática") ~ "EDUCAÇÃO MATEMÁTICA",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("arduíno","arduino","arduino.", "arduíno.") ~ "ARDUÍNO",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias da informação e comunicação", "tecnologia", "tecnologias digitais") ~ "TECNOLOGIAS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("tecnologias educacionais", "tecnologia educacional") ~ "TECNOLOGIAS EDUCACIONAIS",
str_to_lower(DS_PALAVRA_CHAVE) %in% c("robótica educacional.", "robótica móvel", "robótica industrial","robótica educacional", "robótica", "robótica pedagógica", "robótica educativa","robótica.") ~ "ROBÓTICA EDUCACIONAL",
TRUE ~ DS_PALAVRA_CHAVE # Mantém o termo original se não for um dos substituídos
)) %>%
count(DS_PALAVRA_CHAVE, sort = TRUE) %>% # Conta a frequência de cada termo
filter(str_detect(DS_PALAVRA_CHAVE, "[a-zA-Z]")) %>% # Filtra para manter apenas palavras alfabéticas
rename(palavra = DS_PALAVRA_CHAVE) # Renomeia a coluna para 'palavra'
# Remover linhas com frequências inválidas ou NA
palavras_frequentes <- palavras_frequentes %>%
filter(!is.na(n) & n > 0)
# Selecionar os 10 termos mais recorrentes
palavras_frequentes <- palavras_frequentes %>%
slice_max(n, n = 10)
# Removendo a palavra "robótica educacional"
palavras_frequentes <- palavras_frequentes %>%
filter(palavra != "ROBÓTICA EDUCACIONAL")
# Geração do gráfico de barras horizontal
grafico_palavras_chave <- ggplot(palavras_frequentes, aes(x = reorder(palavra, n), y = n)) +
geom_bar(stat = "identity", fill = "blue") + # Adicionando a cor azul às barras
geom_text(aes(label = n), hjust = -0.2, size = 3.5) + # Ajustando a posição do texto
coord_flip() + # Invertendo os eixos para barras horizontais
ggtitle("GRÁFICO DE BARRAS COM AS 10 PALAVRAS-CHAVE MAIS FREQUENTES") +
labs(y = "Frequência", x = "Palavras-chave") +
theme(axis.text.y = element_text(hjust = 1)) # Ajustando texto do eixo Y
# Exibindo o gráfico
print(grafico_palavras_chave)3 Tokenização por n-gram
Geral
# Convertendo a coluna DS_RESUMO para texto, se necessário
dados_filtrados_n_gram <- dados_filtrados %>%
mutate(DS_RESUMO = as.character(DS_RESUMO)) # Convertendo para texto, se necessário
# Tokenização por n-grams (n = 5)
n_grams_frequentes <- dados_filtrados_n_gram %>%
unnest_tokens(ngrams, DS_RESUMO, token = "ngrams", n = 5) %>%
filter(str_detect(ngrams, "^[a-zA-Z\\s]+$")) %>% # Filtra números e pontuação, mantendo apenas palavras
count(ngrams, sort = TRUE) %>% # Conta a frequência dos n-grams
head(50) # Extrai os 10 n-grams mais frequentes
# Salvando os n-grams em um arquivo CSV com ";" como separador
write.csv2(n_grams_frequentes, "n_grams_frequentes.csv", row.names = FALSE)
# Carregando o CSV gerado anteriormente
n_grams_frequentes <- read.csv2("n_grams_frequentes.csv")
# Agrupando os sinônimos de "processo de ensino-aprendizagem"
n_grams_agrupados <- n_grams_frequentes %>%
mutate(
ngrams = case_when(
# Agrupando sinônimos de "processo de ensino-aprendizagem"
str_detect(ngrams, "nos processos de ensino e|o processo de ensino e|de ensino e aprendizagem de|processo de ensino e aprendizagem|o processo de ensino aprendizagem|no processo de ensino aprendizagem|processos de ensino e aprendizagem|no processo de ensino e|de ensino e de aprendizagem") ~ "Processo de ensino-aprendizagem",
# Agrupando sinônimos da BNCC
str_detect(ngrams, "base nacional comum curricular bncc|da base nacional comum curricular|a base nacional comum curricular") ~ "BNCC",
# Agrupando sinônimos de Aprendizagem significativa
str_detect(ngrams, "da aprendizagem significativa de david|teoria da aprendizagem significativa de|aprendizagem significativa de david ausubel|a teoria da aprendizagem significativa") ~ "Aprendizagem Significativa",
# Agrupando sinônimos de Ensino Fundamental
str_detect(ngrams, "do ensino fundamental em uma|do ensino fundamental da rede|com estudantes do ensino fundamental|anos finais do ensino fundamental|nos anos iniciais do ensino|ano do ensino fundamental com|anos iniciais do ensino fundamental|ano do ensino fundamental de|do ensino fundamental de uma|nono ano do ensino fundamental") ~ "Ensino Fundamental",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "de um estudo de caso|em um estudo de caso") ~ "Estudo de Caso",
# Agrupando sinônimos de Pensamento Computacional
str_detect(ngrams, "o desenvolvimento do pensamento computacional|desenvolvimento das habilidades do pc|as habilidades do pensamento computacional|das habilidades do pc o|do pc e no aprendizado|do pensamento computacional pc por") ~ "Pensamento Computacional",
TRUE ~ ngrams)) %>%
group_by(ngrams) %>%
summarise(Frequência = sum(n), .groups = "drop") %>% # Substituir 'freq' pelo nome correto da coluna
arrange(desc(Frequência))
# Salvando a tabela consolidada em um novo arquivo CSV
write.csv2(n_grams_agrupados, "n_grams_agrupados.csv", row.names = FALSE)
# Exibindo apenas os 10 n-grams mais frequentes
kable(
head(n_grams_agrupados, 10), # Seleciona os 10 primeiros pela frequência
format = "html", # Alternativamente, use "markdown" ou "latex" conforme necessário
col.names = c("N-gram", "Frequência"),
caption = "Top 10 N-grams mais frequentes"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| N-gram | Frequência |
|---|---|
| Processo de ensino-aprendizagem | 136 |
| Ensino Fundamental | 59 |
| Aprendizagem Significativa | 24 |
| BNCC | 24 |
| Estudo de Caso | 14 |
| do primeiro ano do ensino | 11 |
| Pensamento Computacional | 10 |
| em sala de aula e | 9 |
| alunos do primeiro ano do | 8 |
| da rede municipal de ensino | 7 |
Área “Ensino”
# Convertendo a coluna DS_RESUMO para texto, se necessário
dados_ENSINO <- dados_filtrados %>% filter(NM_AREA_CONHECIMENTO == "ENSINO")
dados_ENSINO_n_gram <- dados_ENSINO %>%
mutate(DS_RESUMO = as.character(DS_RESUMO)) # Convertendo para texto, se necessário
# Tokenização por n-grams (n = 5)
n_grams_frequentes <- dados_ENSINO_n_gram %>%
unnest_tokens(ngrams, DS_RESUMO, token = "ngrams", n = 5) %>%
filter(str_detect(ngrams, "^[a-zA-Z\\s]+$")) %>% # Filtra números e pontuação, mantendo apenas palavras
count(ngrams, sort = TRUE) %>% # Conta a frequência dos n-grams
head(50) # Extrai os 50 n-grams mais frequentes
# Salvando os n-grams em um arquivo CSV com ";" como separador
write.csv2(n_grams_frequentes, "n_grams_frequentes_ensino.csv", row.names = FALSE)
# Carregando o CSV gerado anteriormente
n_grams_frequentes <- read.csv2("n_grams_frequentes_ensino.csv")
# Agrupando os sinônimos de "processo de ensino-aprendizagem"
n_grams_agrupados <- n_grams_frequentes %>%
mutate(
ngrams = case_when(
# Agrupando sinônimos de "processo de ensino-aprendizagem"
str_detect(ngrams, "nos processos de ensino e|o processo de ensino e|de ensino e aprendizagem de|processo de ensino e aprendizagem|o processo de ensino aprendizagem|no processo de ensino aprendizagem|processos de ensino e aprendizagem|no processo de ensino e|de ensino e de aprendizagem") ~ "Processo de ensino-aprendizagem",
# Agrupando sinônimos da BNCC
str_detect(ngrams, "base nacional comum curricular bncc|da base nacional comum curricular|a base nacional comum curricular") ~ "BNCC",
# Agrupando sinônimos de Aprendizagem significativa
str_detect(ngrams, "da aprendizagem significativa de david|teoria da aprendizagem significativa de|aprendizagem significativa de david ausubel|a teoria da aprendizagem significativa") ~ "Aprendizagem Significativa",
# Agrupando sinônimos de Ensino Fundamental
str_detect(ngrams, "do ensino fundamental em uma|do ensino fundamental da rede|com estudantes do ensino fundamental|anos finais do ensino fundamental|nos anos iniciais do ensino|ano do ensino fundamental com|anos iniciais do ensino fundamental|ano do ensino fundamental de|do ensino fundamental de uma|nono ano do ensino fundamental") ~ "Ensino Fundamental",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "de um estudo de caso|em um estudo de caso") ~ "Estudo de Caso",
TRUE ~ ngrams)) %>%
group_by(ngrams) %>%
summarise(Frequência = sum(n), .groups = "drop") %>%
arrange(desc(Frequência))
# Salvando a tabela consolidada em um novo arquivo CSV
write.csv2(n_grams_agrupados, "n_grams_agrupados_ensino.csv", row.names = FALSE)
# Exibindo apenas os 10 n-grams mais frequentes
kable(
head(n_grams_agrupados, 10), # Seleciona os 10 primeiros pela frequência
format = "html", # Alternativamente, use "markdown" ou "latex" conforme necessário
col.names = c("N-gram", "Frequência"),
caption = "Top 10 N-grams mais frequentes"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| N-gram | Frequência |
|---|---|
| Processo de ensino-aprendizagem | 43 |
| Ensino Fundamental | 18 |
| Aprendizagem Significativa | 7 |
| o desenvolvimento do pensamento computacional | 7 |
| Estudo de Caso | 6 |
| em sala de aula e | 6 |
| coleta de dados foi realizada | 4 |
| como recurso para o ensino | 4 |
| de ensino potencialmente significativa ueps | 4 |
| educacional como recurso para o | 4 |
Área “Educação”
# Filtrando para a área de conhecimento "EDUCAÇÃO"
dados_EDUCACAO <- dados_filtrados %>% filter(NM_AREA_CONHECIMENTO == "EDUCAÇÃO")
dados_EDUCACAO_n_gram <- dados_EDUCACAO %>%
mutate(DS_RESUMO = as.character(DS_RESUMO)) # Convertendo para texto, se necessário
# Tokenização por n-grams (n = 5)
n_grams_frequentes <- dados_EDUCACAO_n_gram %>%
unnest_tokens(ngrams, DS_RESUMO, token = "ngrams", n = 5) %>%
filter(str_detect(ngrams, "^[a-zA-Z\\s]+$")) %>% # Filtra números e pontuação, mantendo apenas palavras
count(ngrams, sort = TRUE) %>% # Conta a frequência dos n-grams
head(50) # Extrai os 50 n-grams mais frequentes
# Salvando os n-grams em um arquivo CSV com ";" como separador
write.csv2(n_grams_frequentes, "n_grams_frequentes_educacao.csv", row.names = FALSE)
# Carregando o CSV gerado anteriormente
n_grams_frequentes <- read.csv2("n_grams_frequentes_educacao.csv")
# Agrupando os sinônimos de "processo de ensino-aprendizagem"
n_grams_agrupados <- n_grams_frequentes %>%
mutate(
ngrams = case_when(
# Agrupando sinônimos de "processo de ensino-aprendizagem"
str_detect(ngrams, "nos processos de ensino e|o processo de ensino e|de ensino e aprendizagem de|processo de ensino e aprendizagem|o processo de ensino aprendizagem|no processo de ensino aprendizagem|processos de ensino e aprendizagem|no processo de ensino e|de ensino e de aprendizagem") ~ "Processo de ensino-aprendizagem",
# Agrupando sinônimos da BNCC
str_detect(ngrams, "base nacional comum curricular bncc|da base nacional comum curricular|a base nacional comum curricular") ~ "BNCC",
# Agrupando sinônimos de Aprendizagem significativa
str_detect(ngrams, "da aprendizagem significativa de david|teoria da aprendizagem significativa de|aprendizagem significativa de david ausubel|a teoria da aprendizagem significativa") ~ "Aprendizagem Significativa",
# Agrupando sinônimos de Ensino Fundamental
str_detect(ngrams, "do ensino fundamental em uma|do ensino fundamental da rede|com estudantes do ensino fundamental|anos finais do ensino fundamental|nos anos iniciais do ensino|ano do ensino fundamental com|anos iniciais do ensino fundamental|ano do ensino fundamental de|do ensino fundamental de uma|nono ano do ensino fundamental|ensino fundamental de uma escola") ~ "Ensino Fundamental",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "de um estudo de caso|em um estudo de caso") ~ "Estudo de Caso",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "da rede municipal de ensino|municipal de ensino de natal|rede municipal de ensino de|escolas da rede municipal de") ~ "Rede Municipal de ensino",
TRUE ~ ngrams)) %>%
group_by(ngrams) %>%
summarise(Frequência = sum(n), .groups = "drop") %>%
arrange(desc(Frequência))
# Salvando a tabela consolidada em um novo arquivo CSV
write.csv2(n_grams_agrupados, "n_grams_agrupados_educacao.csv", row.names = FALSE)
# Exibindo apenas os 10 n-grams mais frequentes
kable(
head(n_grams_agrupados, 10), # Seleciona os 10 primeiros pela frequência
format = "html", # Alternativamente, use "markdown" ou "latex" conforme necessário
col.names = c("N-gram", "Frequência"),
caption = "Top 10 N-grams mais frequentes"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| N-gram | Frequência |
|---|---|
| Processo de ensino-aprendizagem | 26 |
| Ensino Fundamental | 17 |
| Rede Municipal de ensino | 16 |
| instrumentos de coleta de dados | 4 |
| do primeiro ano do ensino | 3 |
| ensino e aprendizagem de conceitos | 3 |
| nas cinco escolas de portugal | 3 |
| o uso de tecnologias na | 3 |
| um ambiente de aprendizagem com | 3 |
| BNCC | 2 |
Área “Ciência da Computação”
# Filtrando os dados para "CIÊNCIA DA COMPUTAÇÃO"
dados_COMPUTACAO <- dados_filtrados %>% filter(NM_AREA_CONHECIMENTO == "CIÊNCIA DA COMPUTAÇÃO")
dados_COMPUTACAO_n_gram <- dados_COMPUTACAO %>%
mutate(DS_RESUMO = as.character(DS_RESUMO)) # Convertendo para texto, se necessário
# Tokenização por n-grams (n = 5)
n_grams_frequentes <- dados_COMPUTACAO_n_gram %>%
unnest_tokens(ngrams, DS_RESUMO, token = "ngrams", n = 5) %>%
filter(str_detect(ngrams, "^[a-zA-Z\\s]+$")) %>% # Filtra números e pontuação, mantendo apenas palavras
count(ngrams, sort = TRUE) %>% # Conta a frequência dos n-grams
head(50) # Extrai os 50 n-grams mais frequentes
# Salvando os n-grams em um arquivo CSV com ";" como separador
write.csv2(n_grams_frequentes, "n_grams_frequentes_computacao.csv", row.names = FALSE)
# Carregando o CSV gerado anteriormente
n_grams_frequentes <- read.csv2("n_grams_frequentes_computacao.csv")
# Agrupando os sinônimos de termos frequentes
n_grams_agrupados <- n_grams_frequentes %>%
mutate(
ngrams = case_when(
# Agrupando sinônimos de "processo de ensino-aprendizagem"
str_detect(ngrams, "nos processos de ensino e|o processo de ensino e|de ensino e aprendizagem de|processo de ensino e aprendizagem|o processo de ensino aprendizagem|no processo de ensino aprendizagem|processos de ensino e aprendizagem|no processo de ensino e|de ensino e de aprendizagem") ~ "Processo de ensino-aprendizagem",
# Agrupando sinônimos da BNCC
str_detect(ngrams, "base nacional comum curricular bncc|da base nacional comum curricular|a base nacional comum curricular") ~ "BNCC",
# Agrupando sinônimos de Aprendizagem significativa
str_detect(ngrams, "da aprendizagem significativa de david|teoria da aprendizagem significativa de|aprendizagem significativa de david ausubel|a teoria da aprendizagem significativa") ~ "Aprendizagem Significativa",
# Agrupando sinônimos de Ensino Fundamental
str_detect(ngrams, "do ensino fundamental em uma|do ensino fundamental da rede|com estudantes do ensino fundamental|anos finais do ensino fundamental|nos anos iniciais do ensino|ano do ensino fundamental com|anos iniciais do ensino fundamental|ano do ensino fundamental de|do ensino fundamental de uma|nono ano do ensino fundamental") ~ "Ensino Fundamental",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "de um estudo de caso|em um estudo de caso") ~ "Estudo de Caso",
# Agrupando sinônimos de Pensamento Computacional
str_detect(ngrams, "desenvolvimento das habilidades do pc|as habilidades do pensamento computacional|das habilidades do pc o|do pc e no aprendizado|do pensamento computacional pc por") ~ "Pensamento Computacional",
TRUE ~ ngrams)) %>%
group_by(ngrams) %>%
summarise(Frequência = sum(n), .groups = "drop") %>%
arrange(desc(Frequência))
# Salvando a tabela consolidada em um novo arquivo CSV
write.csv2(n_grams_agrupados, "n_grams_agrupados_computacao.csv", row.names = FALSE)
# Exibindo apenas os 10 n-grams mais frequentes
kable(
head(n_grams_agrupados, 10), # Seleciona os 10 primeiros pela frequência
format = "html", # Alternativamente, use "markdown" ou "latex" conforme necessário
col.names = c("N-gram", "Frequência"),
caption = "Top 10 N-grams mais frequentes em Ciência da Computação"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| N-gram | Frequência |
|---|---|
| Pensamento Computacional | 11 |
| BNCC | 6 |
| como uma ferramenta de ensino | 3 |
| o desenvolvimento orientado a modelos | 3 |
| a universidade federal do rio | 2 |
| alunos do primeiro ano do | 2 |
| do primeiro ano do ensino | 2 |
| dos estudantes em sala de | 2 |
| e no aprendizado dos componentes | 2 |
| em sala de aula de | 2 |
Área “Física”
# Filtrando para FÍSICA
dados_FISICA <- dados_filtrados %>% filter(NM_AREA_CONHECIMENTO == "FÍSICA")
dados_FISICA_n_gram <- dados_FISICA %>%
mutate(DS_RESUMO = as.character(DS_RESUMO)) # Convertendo para texto, se necessário
# Tokenização por n-grams (n = 5)
n_grams_frequentes <- dados_FISICA_n_gram %>%
unnest_tokens(ngrams, DS_RESUMO, token = "ngrams", n = 5) %>%
filter(str_detect(ngrams, "^[a-zA-Z\\s]+$")) %>% # Filtra números e pontuação, mantendo apenas palavras
count(ngrams, sort = TRUE) %>% # Conta a frequência dos n-grams
head(50) # Extrai os 50 n-grams mais frequentes
# Salvando os n-grams em um arquivo CSV com ";" como separador
write.csv2(n_grams_frequentes, "n_grams_frequentes_fisica.csv", row.names = FALSE)
# Carregando o CSV gerado anteriormente
n_grams_frequentes <- read.csv2("n_grams_frequentes_fisica.csv")
# Agrupando os sinônimos de "processo de ensino-aprendizagem"
n_grams_agrupados <- n_grams_frequentes %>%
mutate(
ngrams = case_when(
# Agrupando sinônimos de "processo de ensino-aprendizagem"
str_detect(ngrams, "nos processos de ensino e|o processo de ensino e|de ensino e aprendizagem de|processo de ensino e aprendizagem|o processo de ensino aprendizagem|no processo de ensino aprendizagem|processos de ensino e aprendizagem|no processo de ensino e|de ensino e de aprendizagem") ~ "Processo de ensino-aprendizagem",
# Agrupando sinônimos da BNCC
str_detect(ngrams, "base nacional comum curricular bncc|da base nacional comum curricular|a base nacional comum curricular") ~ "BNCC",
# Agrupando sinônimos de Aprendizagem significativa
str_detect(ngrams, "da aprendizagem significativa de david|teoria da aprendizagem significativa de|aprendizagem significativa de david ausubel|a teoria da aprendizagem significativa") ~ "Aprendizagem Significativa",
# Agrupando sinônimos de Ensino Fundamental
str_detect(ngrams, "do ensino fundamental em uma|do ensino fundamental da rede|com estudantes do ensino fundamental|anos finais do ensino fundamental|nos anos iniciais do ensino|ano do ensino fundamental com|anos iniciais do ensino fundamental|ano do ensino fundamental de|do ensino fundamental de uma|nono ano do ensino fundamental") ~ "Ensino Fundamental",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "de um estudo de caso|em um estudo de caso") ~ "Estudo de Caso",
TRUE ~ ngrams)) %>%
group_by(ngrams) %>%
summarise(Frequência = sum(n), .groups = "drop") %>%
arrange(desc(Frequência))
# Salvando a tabela consolidada em um novo arquivo CSV
write.csv2(n_grams_agrupados, "n_grams_agrupados_fisica.csv", row.names = FALSE)
# Exibindo apenas os 10 n-grams mais frequentes
kable(
head(n_grams_agrupados, 10), # Seleciona os 10 primeiros pela frequência
format = "html", # Alternativamente, use "markdown" ou "latex" conforme necessário
col.names = c("N-gram", "Frequência"),
caption = "Top 10 N-grams mais frequentes"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| N-gram | Frequência |
|---|---|
| Aprendizagem Significativa | 13 |
| Processo de ensino-aprendizagem | 7 |
| do primeiro ano do ensino | 4 |
| alunos do primeiro ano do | 3 |
| aprendizagem significativa das leis de | 2 |
| aumentar o interesse do aluno | 2 |
| como ferramenta motivadora auxiliar no | 2 |
| das leis de newton na | 2 |
| de terceiro ano do ensino | 2 |
| dificuldades entre elas a falta | 2 |
Área “Interdisciplinar”
# Filtrando para a área INTERDISCIPLINAR
dados_INTERDISCIPLINAR <- dados_filtrados %>% filter(NM_AREA_CONHECIMENTO == "INTERDISCIPLINAR")
# Convertendo a coluna DS_RESUMO para texto, se necessário
dados_INTERDISCIPLINAR_n_gram <- dados_INTERDISCIPLINAR %>%
mutate(DS_RESUMO = as.character(DS_RESUMO)) # Convertendo para texto, se necessário
# Tokenização por n-grams (n = 5)
n_grams_frequentes <- dados_INTERDISCIPLINAR_n_gram %>%
unnest_tokens(ngrams, DS_RESUMO, token = "ngrams", n = 5) %>%
filter(str_detect(ngrams, "^[a-zA-Z\\s]+$")) %>% # Filtra números e pontuação, mantendo apenas palavras
count(ngrams, sort = TRUE) %>% # Conta a frequência dos n-grams
head(50) # Extrai os 50 n-grams mais frequentes
# Salvando os n-grams em um arquivo CSV com ";" como separador
write.csv2(n_grams_frequentes, "n_grams_frequentes_interdisciplinar.csv", row.names = FALSE)
# Carregando o CSV gerado anteriormente
n_grams_frequentes <- read.csv2("n_grams_frequentes_interdisciplinar.csv")
# Agrupando os sinônimos de "processo de ensino-aprendizagem"
n_grams_agrupados <- n_grams_frequentes %>%
mutate(
ngrams = case_when(
# Agrupando sinônimos de "processo de ensino-aprendizagem"
str_detect(ngrams, "nos processos de ensino e|o processo de ensino e|de ensino e aprendizagem de|processo de ensino e aprendizagem|o processo de ensino aprendizagem|no processo de ensino aprendizagem|processos de ensino e aprendizagem|no processo de ensino e|de ensino e de aprendizagem") ~ "Processo de ensino-aprendizagem",
# Agrupando sinônimos da BNCC
str_detect(ngrams, "base nacional comum curricular bncc|da base nacional comum curricular|a base nacional comum curricular|ao que apresenta a bncc|aos moldes da bncc auxiliando") ~ "BNCC",
# Agrupando sinônimos de Aprendizagem significativa
str_detect(ngrams, "da aprendizagem significativa de david|teoria da aprendizagem significativa de|aprendizagem significativa de david ausubel|a teoria da aprendizagem significativa") ~ "Aprendizagem Significativa",
# Agrupando sinônimos de Ensino Fundamental
str_detect(ngrams, "do ensino fundamental em uma|do ensino fundamental da rede|com estudantes do ensino fundamental|anos finais do ensino fundamental|nos anos iniciais do ensino|ano do ensino fundamental com|anos iniciais do ensino fundamental|ano do ensino fundamental de|do ensino fundamental de uma|nono ano do ensino fundamental") ~ "Ensino Fundamental",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "de um estudo de caso|em um estudo de caso") ~ "Estudo de Caso",
# Agrupando sinônimos de Metodologias Ativas
str_detect(ngrams, "por meio de metodologias ativas|educacional por meio de metodologias|meio de metodologias ativas na") ~ "Metodologias Ativas",
TRUE ~ ngrams)) %>%
group_by(ngrams) %>%
summarise(Frequência = sum(n), .groups = "drop") %>%
arrange(desc(Frequência))
# Salvando a tabela consolidada em um novo arquivo CSV
write.csv2(n_grams_agrupados, "n_grams_agrupados_interdisciplinar.csv", row.names = FALSE)
# Exibindo apenas os 10 n-grams mais frequentes
kable(
head(n_grams_agrupados, 10), # Seleciona os 10 primeiros pela frequência
format = "html", # Alternativamente, use "markdown" ou "latex" conforme necessário
col.names = c("N-gram", "Frequência"),
caption = "Top 10 N-grams mais frequentes (Área: INTERDISCIPLINAR)"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| N-gram | Frequência |
|---|---|
| Processo de ensino-aprendizagem | 17 |
| Metodologias Ativas | 12 |
| BNCC | 5 |
| alunos da turma que usou | 2 |
| ano do ensino fundamental anos | 2 |
| as habilidades do pensamento computacional | 2 |
| atividades baseadas em creative learning | 2 |
| da turma que usou lego | 2 |
| de atividades baseadas em creative | 2 |
| de fazer a leitura do | 2 |
Área “Matemática”
# Filtrando para a área de conhecimento MATEMÁTICA
dados_MATEMATICA <- dados_filtrados %>% filter(NM_AREA_CONHECIMENTO == "MATEMÁTICA")
dados_MATEMATICA_n_gram <- dados_MATEMATICA %>%
mutate(DS_RESUMO = as.character(DS_RESUMO)) # Convertendo para texto, se necessário
# Tokenização por n-grams (n = 5)
n_grams_frequentes <- dados_MATEMATICA_n_gram %>%
unnest_tokens(ngrams, DS_RESUMO, token = "ngrams", n = 5) %>%
filter(str_detect(ngrams, "^[a-zA-Z\\s]+$")) %>% # Filtra números e pontuação, mantendo apenas palavras
count(ngrams, sort = TRUE) %>% # Conta a frequência dos n-grams
head(50) # Extrai os 50 n-grams mais frequentes
# Salvando os n-grams em um arquivo CSV com ";" como separador
write.csv2(n_grams_frequentes, "n_grams_frequentes_matematica.csv", row.names = FALSE)
# Carregando o CSV gerado anteriormente
n_grams_frequentes <- read.csv2("n_grams_frequentes_matematica.csv")
# Agrupando os sinônimos de "processo de ensino-aprendizagem"
n_grams_agrupados <- n_grams_frequentes %>%
mutate(
ngrams = case_when(
# Agrupando sinônimos de "processo de ensino-aprendizagem"
str_detect(ngrams, "nos processos de ensino e|o processo de ensino e|de ensino e aprendizagem de|processo de ensino e aprendizagem|o processo de ensino aprendizagem|no processo de ensino aprendizagem|processos de ensino e aprendizagem|no processo de ensino e|de ensino e de aprendizagem") ~ "Processo de ensino-aprendizagem",
# Agrupando sinônimos da BNCC
str_detect(ngrams, "base nacional comum curricular bncc|da base nacional comum curricular|a base nacional comum curricular") ~ "BNCC",
# Agrupando sinônimos de Aprendizagem significativa
str_detect(ngrams, "da aprendizagem significativa de david|teoria da aprendizagem significativa de|aprendizagem significativa de david ausubel|a teoria da aprendizagem significativa") ~ "Aprendizagem Significativa",
# Agrupando sinônimos de Ensino Fundamental
str_detect(ngrams, "do ensino fundamental em uma|do ensino fundamental da rede|com estudantes do ensino fundamental|anos finais do ensino fundamental|nos anos iniciais do ensino|ano do ensino fundamental com|anos iniciais do ensino fundamental|ano do ensino fundamental de|do ensino fundamental de uma|nono ano do ensino fundamental") ~ "Ensino Fundamental",
# Agrupando sinônimos de Estudo de Caso
str_detect(ngrams, "de um estudo de caso|em um estudo de caso") ~ "Estudo de Caso",
# Agrupando sinônimos de Objetivo de pesquisa
str_detect(ngrams, "este trabalho tem como objetivo|o presente trabalho tem como|presente trabalho tem como objetivo|como objetivo principal utilizar a") ~ "Objetivo de pesquisa",
TRUE ~ ngrams)) %>%
group_by(ngrams) %>%
summarise(Frequência = sum(n), .groups = "drop") %>%
arrange(desc(Frequência))
# Salvando a tabela consolidada em um novo arquivo CSV
write.csv2(n_grams_agrupados, "n_grams_agrupados_matematica.csv", row.names = FALSE)
# Exibindo apenas os 10 n-grams mais frequentes
kable(
head(n_grams_agrupados, 10), # Seleciona os 10 primeiros pela frequência
format = "html", # Alternativamente, use "markdown" ou "latex" conforme necessário
col.names = c("N-gram", "Frequência"),
caption = "Top 10 N-grams mais frequentes"
) %>%
kable_styling(full_width = FALSE, bootstrap_options = c("striped", "hover"))| N-gram | Frequência |
|---|---|
| Objetivo de pesquisa | 12 |
| Processo de ensino-aprendizagem | 9 |
| BNCC | 4 |
| a teoria de matrizes de | 2 |
| ano do ensino fundamental e | 2 |
| com o cubo de rubik | 2 |
| dessa forma o presente trabalho | 2 |
| este trabalho tem o objetivo | 2 |
| o cubo de rubik e | 2 |
| resolver o cubo de rubik | 2 |
4 Clusterização
# Pré-processamento dos textos
corpus <- Corpus(VectorSource(dados_filtrados$DS_RESUMO)) # Usando a coluna DS_RESUMO da base dados_filtrados
corpus <- tm_map(corpus, content_transformer(tolower)) # Converter para minúsculas
corpus <- tm_map(corpus, removePunctuation) # Remover pontuação
corpus <- tm_map(corpus, removeNumbers) # Remover números
corpus <- tm_map(corpus, removeWords, stopwords("pt")) # Remover stopwords em português
corpus <- tm_map(corpus, stripWhitespace) # Remover espaços extras
# Transformação TF-IDF
tdm <- DocumentTermMatrix(corpus, control = list(weighting = weightTfIdf))
matriz_tfidf <- as.matrix(tdm)
# Converter para formato esparso para economizar memória
matriz_tfidf <- as(matriz_tfidf, "sparseMatrix")
# Reduzir dimensionalidade com SVD para simplificar os cálculos
set.seed(123)
svd_result <- irlba(matriz_tfidf, nv = 50) # Reduzindo para 50 dimensões
matriz_reduzida <- svd_result$u %*% diag(svd_result$d)
# Calcular matriz de similaridade com a matriz reduzida
dist_matrix <- proxy::dist(matriz_reduzida, method = "cosine")
# Realizar o agrupamento hierárquico
cluster <- hclust(dist_matrix, method = "ward.D2")
# Definir o número desejado de clusters
num_clusters <- 3
# Cortar o dendrograma para obter o número desejado de clusters
clusters <- cutree(cluster, k = num_clusters)
# Associe as palavras ao agrupamento
palavras <- colnames(matriz_tfidf) # Extraímos as palavras da matriz TF-IDF
palavras_clusters <- lapply(1:num_clusters, function(i) {
palavras[clusters == i] # Palavras associadas ao cluster i
})Tabela interativa: Palavras mais frequentes por cluster
# Definir o número desejado de clusters
num_clusters <- 3
# Identificar palavras mais frequentes por cluster
summary_by_cluster <- list()
for (i in 1:num_clusters) {
# Selecionar documentos do cluster atual
cluster_docs <- matriz_tfidf[clusters == i, , drop = FALSE]
# Somar as frequências de cada palavra no cluster
word_freq <- colSums(cluster_docs)
# Selecionar as 10 palavras mais frequentes
top_words <- sort(word_freq, decreasing = TRUE)[1:100]
# Armazenar o resumo do cluster
summary_by_cluster[[i]] <- names(top_words)
}
# Criar um data frame com clusters e palavras mais frequentes
clusters_df <- data.frame(
Cluster = rep(1:num_clusters, each = 50), # Repete o número do cluster
Palavra = unlist(summary_by_cluster) # Converte as palavras em uma única coluna
)
# Calcular a frequência de todas as palavras
word_frequencies <- apply(matriz_tfidf, 2, sum)
# Mapear frequências para o data frame
clusters_df$Frequencia <- word_frequencies[clusters_df$Palavra]
# Ordenar clusters por frequência
clusters_df <- clusters_df %>%
arrange(Cluster, desc(Frequencia))
# Exibir a tabela interativa
datatable(clusters_df,
options = list(pageLength = 10, autoWidth = TRUE,
order = list(list(0, 'asc'))), # Ordena pela coluna 'Cluster'
rownames = FALSE, # Remove índices da tabela
caption = 'Tabela: Palavras mais frequentes por cluster.')5 Núvens de Palavras por Cluster
Cluster 1
# Selecionar palavras e frequências do cluster 1
cluster_palavras <- clusters_df[clusters_df$Cluster == 1, ]
# Criar a nuvem de palavras para o cluster 1
wordcloud(
words = cluster_palavras$Palavra,
freq = cluster_palavras$Frequencia,
min.freq = 0.5, # Exibe palavras com frequência mínima de 1
max.words = Inf, # Exibe todas as palavras
random.order = FALSE, # Palavras mais frequentes no centro
scale = c(2, 0.1), # Tamanho das palavras
colors = brewer.pal(15, "Dark2") # Paleta de cores vibrante
)Cluster 2
# Selecionar palavras e frequências do cluster 2
cluster_palavras <- clusters_df[clusters_df$Cluster == 2, ]
# Criar a nuvem de palavras para o cluster 2
wordcloud(
words = cluster_palavras$Palavra,
freq = cluster_palavras$Frequencia,
min.freq = 0.5, # Exibe palavras com frequência mínima de 0.5
max.words = Inf, # Exibe todas as palavras
random.order = FALSE, # Palavras mais frequentes no centro
scale = c(2, 0.1), # Tamanho das palavras
colors = brewer.pal(8, "Dark2") # Paleta de cores vibrante
)Cluster 3
# Selecionar palavras e frequências do cluster 2
cluster_palavras <- clusters_df[clusters_df$Cluster == 3, ]
# Criar a nuvem de palavras para o cluster 2
wordcloud(
words = cluster_palavras$Palavra,
freq = cluster_palavras$Frequencia,
min.freq = 0.5, # Exibe palavras com frequência mínima de 0.5
max.words = Inf, # Exibe todas as palavras
random.order = FALSE, # Palavras mais frequentes no centro
scale = c(2, 0.1), # Tamanho das palavras
colors = brewer.pal(8, "Dark2") # Paleta de cores vibrante
)