Qual é a melhor área para se especializar na Engenharia Ambiental? Um estudo usando R

Aguá de abastecimento ou tratamento de esgoto? Hidrologia ou mineração? Qual área é a melhor área para atuarmos como Engenheiros Ambientais? Analisamos os TCCs de uma universidade para definirmos as áreas com maior demanda de profissionais. Acompanhe nosso tutorial com R, Text Mining e Web Scraping.

Ao longo da nossa graduação, nos deparamos com diversas áreas de estudos, várias temáticas que podemos nos especializar. Cada professor irá valorizar sua especialidade e incentivar os acadêmicos a seguirem os mesmos passos.

Entretanto, quando nos formamos, muitas vezes temos em mente a área que desejamos atuar.

E mesmo assim, ainda entramos no debate entre qual é a melhor opção, ser um engenheiro generalista (sabe um pouco de tudo, mas nada profundo) ou especialista (sabe tudo de uma área definida e deixa as outras de lado)? Falamos um pouco sobre isso na postagem “Como obter melhores resultados na consultoria ambiental“.

Considerando que a melhor opção é se especializar, ainda nos resta a pergunta, qual é a melhor área para se especializar na Engenharia Ambiental?

Vamos elaborar um modelo para determinar qual é a melhor área de especialização para o(a) engenheiro(a) ambiental utilizando programação em R, aplicando conceitos de mineração de textos (text mining) e web scraping (algo que poderia ser traduzido como “raspar a internet”).

Nossa avaliação partirá do pretexto que os egressos atuarão nas áreas em que eles fizeram seus TCCs, tendo em mente que eles se aprofundaram naquele assunto e se sentem a vontade para trabalharam com o tema.

Dessa forma, áreas pouco exploradas nos TCCs seriam as melhores para especializações, pois haverá uma maior demanda de profissionais.

Caso você não esteja interessado na programação com R, clique aqui para pular para as considerações finais.

Como usar Web Scraping no R

A internet contém muita informação e dados que podem auxiliar nossas vidas. Porém, ficar copiando e colando os dados que encontramos nela é um trabalho entediante.

Assim, foram desenvolvidas técnicas para copiar tais dados automaticamente e salvá-los nos nossos computadores. Quase todas as linguagens de programação apresentam um pacote de Web Scraping, sendo ela ainda habilidade fundamental para qualquer cientista de dados.

Além de conhecermos essa técnica, um pouco de conhecimento de HTML e CSS também são interessantes, pois precisaremos realizar a leitura dos códigos dos sites que iremos explorar.

Agora que já sabemos o conceito de web scraping, vamos utilizá-la para baixarmos os títulos dos TCCs do curso de engenharia ambiental (e sanitária) da UNESC.

Aqui, nos limitaremos a uma universidade, mas com este tutorial em mãos, você pode aplicar para qualquer curso de qualquer região.

Obtendo os dados no Repositório UNESC

Navegando no repositório Unesc, encontramos a nossa página desejada (TCCs da Engenharia Ambiental) e clicamos com o botão esquerdo nela e selecionamos “Visualizar Código Fonte” e vamos verificar qual é o formato do código html que contém os títulos do TCC.

Código HTML da nossa página de interesse.
Código HTML da nossa página de interesse.

Embora o código esteja um pouco bagunçado, notamos o uso da tag <table> para separar os itens que descrevem os TCCs (tais como nome, autor e orientador).

Agora que sabemos que os títulos estão organizados na forma de tabelas, vamos escrever o início do nosso código.


install.packages("XML")
library("XML")

url <- "http://repositorio.unesc.net/handle/1/1235?offset=0"

tables00 <- readHTMLTable(url)

# O resultado é salvo no formato de lista, sendo que o primeiro membro representa
# a tabela completa; o segundo item representa a coluna com os títulos dos TCCs, e
# o terceiro membro pede ao R que somente os títulos sejam apresentados.
tables00[[1]][3][[1]]

Primeiramente, instalamos o pacote XML utilizando a função install.packages() e carregamos ela com library().

Em seguida, criamos uma variável chamada url com o endereço do site no qual desejamos obter a informação e solicitamos ao R que as tabelas desse documento sejam salvas, utilizando a função readHTMLTable() do pacote XML.

Marcador HTML utilizado no site em estudo.
Marcador HTML utilizado no site em estudo.

O formato de apresentação dos TCCs neste site é realizado em tabelas e em cada página é apresentado 20 documentos. Quando clicamos em avançar, o marcador offset no endereço irá mudar, aumentando de 20 em 20. Dessa forma, vamos usar essa informação para criar uma rotina (loop) para salvarmos os outros títulos de TCC.

urls <- list()
sequencia <- cbind(c(1:9), seq(0, 160, 20))
for(n in 1:9){
 urls[sequencia[n,1]] <- paste0("http://repositorio.unesc.net/handle/1/1235?offset=", sequencia[n,2])
}

titulos <- lapply(urls, readHTMLTable)

Aqui, criamos um loop do tipo for, sendo que ele é executado com valores de n entre 1 e 9 da primeira coluna da variável sequencia (quantidade de páginas no site que buscamos os TCCs) e com a segundo coluna com os possíveis valores dos marcadores offset (previamente identificados no site que buscamos os títulos dos TCCs).

Utilizamos a função paste0() para unir a URL com o número do marcador e logo em seguida usamos a função lapply(), que funciona como um loop, e aplicamos a função readHTMLTable() para todos os itens da variável urls.

Extraindo informações com Mineração de Texto

A mineração de texto é um conjunto de técnicas utilizadas para analisar dados não estruturados, tais como documentos de texto e emails.

Para extrair informações desses documentos, a mineração de texto faz uso de técnicas de análise linguística, visando realizar resumos, classificação ou extrair informações importantes – como, qual é o melhor para se especializar na engenharia? 😉

Usando Text Mining no R

Voltando ao R. Para utilizarmos mineração de texto no R, precisaremos instalar os seguintes pacotes:

  • tm – Pacote dedicado para operação de mineração de texto;
  • ggplot2 – Pacote para criação de gráficos, por exemplo, gráficos de dispersão;

Você pode instalar esses pacotes utilizando o seguinte comando:

Pacotes <- c("tm", "ggplot2")
install.packages(Pacotes, dependencies = TRUE)

## fonte: https://rstudio-pubs-static.s3.amazonaws.com/265713_cbef910aee7642dc8b62996e38d2825d.html

Com os devidos pacotes carregados, vamos salvar os títulos que baixamos no formato de caracteres (lembrem-se que eles estavam no formato de fatores), para que em seguida, realizemos os tratamentos para processar a mineração de texto.


tccs <- c(as.character(titulos[[1]][1][[1]][[3]]), as.character(titulos[[2]][1][[1]][[3]]),
as.character(titulos[[3]][1][[1]][[3]]), as.character(titulos[[4]][1][[1]][[3]]),
as.character(titulos[[5]][1][[1]][[3]]), as.character(titulos[[6]][1][[1]][[3]]),
as.character(titulos[[6]][1][[1]][[3]]), as.character(titulos[[7]][1][[1]][[3]]),
as.character(titulos[[8]][1][[1]][[3]]), as.character(titulos[[9]][1][[1]][[3]]))
palavras <- unlist(strsplit(tccs, " "))

write(palavras, file = "/home/fernando/Área de Trabalho/texto.txt", sep=" ")

Neste código, juntamos os títulos dos tccs em apenas uma variável e convertemos eles em caracteres (com a função as.character()), sendo que posteriormente separamos as palavras dos títulos em caracteres (funções strsplit() e unlist()).

Por fim, exportamos os dados para um arquivo de texto – Não se esqueça de modificar o diretório/endereço na opção file.

Com os títulos salvos, vamos criar um arquivo chamado Corpus, utilizado na mineração de texto para análise. Esse procedimento será feito usando a função VCorpus do pacote tm.


analise_texto <- VCorpus(DirSource("/home/fernando/Área de Trabalho/B2E/"))
analise_texto <- tm_map(analise_texto, removePunctuation)
analise_texto <- tm_map(analise_texto, removeNumbers)
analise_texto <- tm_map(analise_texto, tolower)

port_stopwords <- read.table("/home/fernando/Área de Trabalho/B2E/stopwords.txt", colClasses = "character")

#Fonte das stopwords: https://gist.github.com/alopes/5358189
analise_texto <- tm_map(analise_texto, removeWords, port_stopwords[,1])
analise_texto <- tm_map(analise_texto, PlainTextDocument)

Após a criação do arquivo Corpus, note que realizamos diversas outras funções.

Fizemos uma limpeza dos dados.

Com a função tm_map(), removemos caracteres que nos atrapalhariam na análise dos dados, tais como pontuação (removePonctuation), números (removeNumbers), colocamos todas as letras em minusculas (tolower) e tiramos artigos (o, a, os, as) e outras palavras que não acrescentam nada à análise, as chamadas stop words (removeWords).

Agora, criaremos uma tabela de frequências e exportaremos ela para um arquivo CSV.


doc_matriz <- DocumentTermMatrix(analise_texto)

freq <- sort(colSums(as.matrix(doc_matriz)), decreasing = TRUE)
excel <- as.matrix(doc_matriz)
write.csv(excel, file="/home/fernando/Área de Trabalho/B2E/doc_matrix.csv")

head(freq, 20) # Quais são os 20 termos mais utilizados?

No código acima, somamos as frequências e as ordenamos, criando assim a variável “freq”. Em seguida, criamos a variável “excel” para exportar nossos dados no formato CSV.

E com a função head(), inspecionamos os 20 termos mais utilizados nos títulos dos TCCs.

50 palavras mais utilizadas
50 palavras mais utilizadas nos TCCs da Engenharia Ambiental da UNESC.

O que podemos inferir a partir desses dados? (As porcentagens a seguir foram calculadas considerando um total de 191 trabalhos de conclusão de cursos).

No nosso contexto, algumas palavras, como “estudo”, “ambiental”, “sistema” e “área”, não nos fornecem muita informação, por isso, não avaliarei elas a fundo.

Já o termo “caso” nos fornece algumas ideias, pois estaremos tratando de um estudo de caso. Nesse sentido, 26,7% dos TCCs foram aplicados num problema real de uma empresa ou município.

17,8% dos trabalhos foram realizados na área de resíduos (a porcentagem é maior, pois percebemos que há outras variações do termo resíduos).

O termo “implantação” já aparece 10,5%. Possivelmente são trabalhos onde houve a implementação de novas técnicas ou processos de gestão em empresas ou órgãos públicos.

Podemos ficar horas e horas interpretando os dados, mas vamos aproveitar o seu tempo aqui para plotarmos um gráfico com eles.


wf <- data.frame(word=names(freq), freq=freq)
library(ggplot2)
grafico <- ggplot(subset(wf, freq&amp;amp;gt;10), aes(x = reorder(word, -freq), y = freq)) +
 geom_bar(stat = "identity") + labs(x = "Termos", y = "Frequência") +
 theme(axis.text.x=element_text(angle=45, hjust=1))
grafico

#fonte: https://rstudio-pubs-static.s3.amazonaws.com/265713_cbef910aee7642dc8b62996e38d2825d.html

Com o código acima, criamos um gráfico usando o pacote ggplot2 e o resultado é a imagem abaixo.

Termos utilizados mais de 10 vezes nos TCCS
Termos utilizados mais de 10 vezes nos TCCS

Você pode modicar os termos que aparecem no gráfico modificando a função ggplot(), onde ao invés de termos “freq>10”, você pode colocar 7, 5 ou outro número do seu interesse.

Qual é o melhor campo para nos especializarmos?

Considerando os termos mais frequentes que levantamos nos TCCs analisados, os campos de atuação que mais aparecerem são:

  • Resíduos Sólidos;
  • Água;
  • Mineração;
  • Gestão Ambiental;
  • Cerâmica;
  • Efluentes.

Certo. Esses são os campos onde vários profissionais já estão atuando. Mas devemos levar em conta algumas observações:

  • Se nenhum TCC foi realizado em uma determinada área, ela não irá aparecer na nossa avaliação;
  • Avaliamos somente os TCCs de uma universidade;
  • A região onde encontra-se essa universidade já tem um potencial industrial instalado na região, logo, haverá mais TCCs nestas empresas.

Poderíamos analisar os termos menos citados nesta lista – utilizando a função tail() – mas você irá notar que há muito ruído, informação que só atrapalha, prejudicando nossa análise.

Podemos pensar que as áreas para especialização são aquelas que não aparecem na nossa lista?

De certa forma sim, já havíamos comentado em postagem anterior (Como obter melhores resultados na consultoria ambiental) algumas áreas para especialização (isto é, energia, esgoto e modelagem matemática) e elas aparecem muito pouco na nossa análise.

“Posso me especializar numa das áreas citadas?”

Sim. Nossa análise fornece algumas ideias para especializações, mas não pense nelas como limitadoras.

As áreas citadas podem conter especializações. Vejamos abaixo.

A área de resíduos sólidos aparece bastante, mas quando ela esta vinculada ao reaproveitamento, acredito que ela tenha um grande potencial, mas quando ela aparece somente com a gestão ambiental, a concorrência é maior, pois outros profissionais também atuam fortemente neste campo.

A área de mineração também pode ser um bom foco, especialmente se considerarmos o impacto ambiental oriundo de suas atividades. A industria cerâmica aparece aqui também devido à grande quantidade de empresas instaladas aqui na região sul de Santa Catarina.

A gestão ambiental tem os mesmos problemas citados na área de resíduos sólidos (maior número de profissionais de outras áreas atuando no mesmo campo).

Mesmo nesses campos que levantamos aqui, a modelagem matemática pode auxiliar todos. Talvez em função da sua complexidade, ela é muitas vezes desconsiderada e acaba deixando uma maior demanda de profissionais.

Já descobriu a sua área de especialização? O que você acha do que descobrimos aqui utilizando mineração de texto? Deixe sua opinião nos comentários.



Clique na figura abaixo e responda nosso questionário para receber nosso ebook "Como criar mapas de localização com ArcGIS 10.x".


Author: Fernando BS

Engenheiro Ambiental e de Segurança do Trabalho. Atua nas áreas de recuperação ambiental, geoprocessamento e ciência do solo. Busca soluções utilizando softwares como ArcGIS, R e MATLAB.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *