Escolar Documentos
Profissional Documentos
Cultura Documentos
EXÉRCITO BRASILEIRO
DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA
INSTITUTO MILITAR DE ENGENHARIA
CURSO DE GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO
RIO DE JANEIRO
2023
ANDRÉ LUIZ FERNADES VIDAL
BERNARD REZNIK
PEDRO BARROS BASTOS DA SILVA
Rio de Janeiro
2023
©2023
INSTITUTO MILITAR DE ENGENHARIA
Praça General Tibúrcio, 80 – Praia Vermelha
Rio de Janeiro – RJ CEP: 22290-270
Este exemplar é de propriedade do Instituto Militar de Engenharia, que poderá incluí-lo em base
de dados, armazenar em computador, microfilmar ou adotar qualquer forma de arquivamento.
É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliotecas deste
trabalho, sem modificação de seu texto, em qualquer meio que esteja ou venha a ser fixado,
para pesquisa acadêmica, comentários e citações, desde que sem finalidade comercial e que
seja feita a referência bibliográfica completa.
Os conceitos expressos neste trabalho são de responsabilidade do(s) autor(es) e do(s) orienta-
dor(es).
Fernades Vidal, André Luiz; Reznik, Bernard; Barros Bastos da Silva, Pedro.
Desenvolvimento de uma ferramenta de extração de dados de militares para
gestão do conhecimento e recomendação / André Luiz Fernades Vidal, Bernard
Reznik e Pedro Barros Bastos da Silva. – Rio de Janeiro, 2023.
39 f.
AM Aprendizado de Máquina.
GC Gestão do Conhecimento.
IA Inteligência Artificial.
IP Internet Protocol.
SR Sistema de Recomendação.
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.1 MOTIVAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 CARACTERIZAÇÃO DO PROBLEMA . . . . . . . . . . . . . . . . . . . . 10
1.3 OBJETIVO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 JUSTIFICATIVA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 ESTRUTURA DO TEXTO . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 CONCEITOS BÁSICOS . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1 GESTÃO DO CONHECIMENTO . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 SISTEMAS DE RECOMENDAÇÃO . . . . . . . . . . . . . . . . . . . . . 14
2.3 WEBSCRAPING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 DESCRIÇÃO DA FONTE DE DADOS . . . . . . . . . . . . . . . . . . . . 14
3 TRABALHOS ANTERIORES . . . . . . . . . . . . . . . . . . . . . . 16
3.1 SISTEMA PARA MINERAÇÃO DE DADOS DE GESTÃO DO CONHECI-
MENTO NOS BOLETINS DO EXÉRCITO . . . . . . . . . . . . . . . . . 16
3.2 SISTEMA DE RECOMENDAÇÃO PARA GESTÃO DO CONHECIMENTO
DE PESSOAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4 PROPOSTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1 IDENTIFICAÇÃO DA VAGA . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.2 EXTRAÇÃO DO TEXTO DA VAGA . . . . . . . . . . . . . . . . . . . . . 19
4.3 UNIVERSO DE CANDIDATOS . . . . . . . . . . . . . . . . . . . . . . . 21
4.4 EXTRAÇÃO DA LISTA DE CANDIDATOS . . . . . . . . . . . . . . . . . 21
4.5 EXTRAÇÃO DE INFORMAÇÕES DO CANDIDATO VIA LATTES . . . . . 21
4.6 EXTRAÇÃO DE PALAVRAS-CHAVE DA VAGA . . . . . . . . . . . . . . . 22
4.7 INGESTÃO DE DADOS NUM BANCO DE DADOS . . . . . . . . . . . . 22
4.8 CÁLCULO DAS SIMILARIDADES ENTRE CANDIDATOS E VAGAS . . . . 23
4.9 ORDENAÇÃO DOS CANDIDATOS PARA A VAGA . . . . . . . . . . . . . 23
5 IMPLEMENTAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.1 EXTRAÇÃO DOS CANDIDATOS DO UNIVERSO DE CANDIDATOS . . . 24
5.1.1 FONTES DE DADOS UTILIZADAS . . . . . . . . . . . . . . . . . . . . . . 24
5.1.1.1 PORTAL DA TRANSPARÊNCIA . . . . . . . . . . . . . . . . . . . . . . . . 24
5.1.1.2 PLATAFORMA LATTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.1.2 TRANSFORMAÇÕES NOS DADOS . . . . . . . . . . . . . . . . . . . . . . 26
5.2 EXTRAÇÃO E PROCESSAMENTO DA VAGA . . . . . . . . . . . . . . . 29
5.2.1 EXTRAÇÃO DO TEXTO DA VAGA . . . . . . . . . . . . . . . . . . . . . . 29
5.2.2 EXTRAÇÃO DAS PALAVRAS-CHAVE DA VAGA . . . . . . . . . . . . . . . 30
6 CRONOGRAMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
7 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
9
1 INTRODUÇÃO
1.1 Motivação
Principalmente na era atual do conhecimento, recursos humanos são um dos
principais fatores estratégicos que as empresas possuem (5, 6). Os funcionários mais
importantes de uma empresa concentram informações críticas para a sua operação, existindo
ainda um impacto econômico significativo para a organização caso este funcionário deixe o
seu quadro de empregados (7). Esse processo de dependência, contudo, pode ser minimizado
caso boas práticas de GC sejam realizadas na organização.
Relacionado ao problema da obtenção de recursos humanos qualificados está o
Capítulo 1. Introdução 10
1.3 Objetivo
O objetivo deste trabalho é desenvolver um sistema que será usado como base
para o processo de alocação de militares em vagas disponíveis no próprio Exército ou em
outras instituições, nacionais ou internacionais, de modo que as decisões tomadas sejam
otimizadas. Esse sistema será composto por um conjunto de componentes cujo objetivo
é realizar o ETL (Extract, Load and Transform) de informações sobre militares para
aumentar a diversidade e quantidade desses dados e por uma componente que fornecerá a
lista dos militares mais preparados para assumir a vaga. Esta deverá considerar tanto as
informações adquiridas sobre os militares, quanto a descrição da própria NCE de modo a
combiná-las para posterior fornecimento a um algoritmo de ranqueamento que irá retornar
Capítulo 1. Introdução 11
essa lista. Outro objetivo é evoluir o trabalho anterior (10). Para isso, pode-se fazer algumas
modificações como aumentar a quantidade de dados disponíveis extraídas do Lattes e
adicionar uma maneira de desambiguar homônimos para que seja possível identificar que
os dados sendo observados pertencem de fato à pessoas do universo de candidatos.
Mais especificamente, os objetivos primário e secundário do presente trabalho são,
respectivamente:
1.4 Justificativa
Uma das funções principais da Agência de Gestão e Inovação Tecnológica (AGITEC)
é “promover a gestão do conhecimento em atendimento às demandas estabelecidas pelo
Sistema de Ciência, Tecnologia e Inovação (SCT&I)”(11). Dentro dessas demandas pode-se
citar que é de responsabilidade desta organização militar auxiliar na tomada de decisão
quanto à alocação de militares em cargos específicos na força utilizando a GC. O processo
de análise de currículos manual é custoso em relação a tempo e recursos humanos utilizados,
além de ser passível de falhas inerentes ao processo. No entanto, este processo pode ser
semi-automatizado de acordo com regras pré-estabelecidas, recebendo uma variedade
maior de parâmetros de cada candidato e, utilizando-se de algoritmos de Aprendizado de
Máquina (AM) e técnicas de Processamento de Linguagem Natural (PLN), para trazer
recomendações melhores para posterior verificação humana.
(PFC) realizados no Instituto Militar de Engenharia que serviram de base para o presente
estudo. Seus objetivos, resultados e conclusões são discutidos para agregar o conhecimento
gerado anteriormente. No Capítulo 4 a proposta da solução a ser desenvolvida é apresentada.
São explicados, em um alto nível, os componentes a serem desenvolvidos até o final do
trabalho. A seguir, no Capítulo 5 são apresentados os códigos desenvolvidos até o momento
da entrega deste relatório. Finalmente, no Capítulo 6 é apresentado o cronograma relativo
ao trabalho e no Capítulo 7, a conclusão deste relatório é explicitada.
13
2 CONCEITOS BÁSICOS
2.3 Webscraping
Webscraping é uma técnica de extração de dados da web de forma automatizada e
é um processo que envolve o uso de bots ou outros programas de software para analisar e
coletar informações de páginas da web. Esses bots podem percorrer o código HTML de um
site, identificar os elementos desejados, como textos, imagens, links ou tabelas, e extrair
esses dados para uso posterior (17). Segundo Possa(18), o webscraping pode ser usado para
uma variedade de finalidades, como pesquisa de mercado, monitoramento de preços, análise
de concorrência e coleta de dados para estudos acadêmicos. No entanto, é importante
respeitar as políticas de uso e os termos de serviço dos sites que estão sendo acessados,
além de considerar a legalidade e ética da prática. É fundamental obter permissão ou
seguir as diretrizes dos sites para evitar violações de direitos, havendo o risco de se deparar
com ferramentas que previnem a extração ilegal.
3 TRABALHOS ANTERIORES
O objetivo final era utilizar funções de núcleo que são funções de transformação
do espaço vetorial para utilizar o produto interno como métrica de similaridade, para
computar a similaridade entre trechos diferentes de um texto, aproveitando-se da semântica
embutida das frases. Dessa forma, foi possível comparar a descrição de uma vaga vinda
da NCE com o currículo de um candidato de forma numérica, sendo capaz, portanto, de
produzir um ranqueamento entre eles.
Após a obtenção de resultados intermediários, testes foram feitos analisando-
se diferentes cenários onde se saberiam as condições iniciais e o resultado esperado,
possibilitando ajustes finos e a adição de regras de negócio sensíveis que adicionam certo
contexto necessário na classificação. Um exemplo disso foi a adição ou não do posto do
candidato como algo relevante na classificação, o que acabou sendo percebido como um
atributo necessário, visto que o Departamento de Ciência e Tecnologia (DCT) o utilizava
como um filtro dependendo da vaga ofertada.
Desse modo, tornou-se perceptível que, para o resultado do ranqueamento possuir
maior alinhamento ao objetivo final da organização, este necessita de restrições específicas
sobre quais regras de negócio precisam ser consideradas de maneira a possibilitar reproduzir
as decisões humanas por algoritmos. Essa dependência torna-se ainda mais necessária em
um contexto de análise textual. O treinamento dos algoritmos é feito com bases textuais
sem o contexto do problema de interesse (10). Assim, o cálculo das similaridades não
Capítulo 3. Trabalhos anteriores 18
contemplam essas regras, precisando assim, de uma adição manual delas para resultados
mais relevantes e alinhados com o pensamento de quem utiliza a ferramenta a ser produzida.
19
4 PROPOSTA
Com isso, será possível extrair do Lattes os currículos dos militares, extraindo
informações sobre suas experiências e armazenando-as em um banco de dados. Um adendo
importante a ser feito é que nesse momento deve ocorrer uma desambiguação de homônimos
ao analisar informações e identificar a relação do candidato com entidades relacionadas ao
Exército.
5 IMPLEMENTAÇÃO
System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, extractPath);
}
targetRank = sys.argv[1]
year = sys.argv[2] #to do: use defaults in case not given
month = sys.argv[3]
if(targetRank not in ranks): raise NameError()
df = pd.read_csv(defaultPath + year + month + "_Cadastro.csv", encoding = "ISO-8859-1",
sep=';', engine='python')
filtered = df[(df['ORG_LOTACAO'] == 'Comando do Exército') &
(df['DESCRICAO_CARGO'] == targetRank)]['NOME']
filtered.to_excel(defaultPath + targetRank + year + month + ".xlsx", index=False)
para um formato a ser utilizado pelos modelos de IA. Assim, uma API foi desenvolvida
com uma única rota, que possui o seguinte funcionamento:
2. Verifica se o currículo já foi baixado anteriormente com sucesso e se isso foi feito há
menos de 90 dias;
4. Caso contrário, faz uma requisição para o Serviço Web do Lattes, descomprime o
currículo e segue o fluxo de sucesso comentado no item anterior;
if (curriculum.Id is null)
return null;
_repository.Save(curriculum);
return curriculum;
}
XML fornecido pelo Lattes. A tradução do objeto de origem externa (Lattes) para um
objeto pertencente ao domínio da aplicação é feita no construtor do Código 5.5. Desse
modo, elementos externos ficam desacoplados da lógica do funcionamento.
Author = cv.DADOSGERAIS.NOMECOMPLETO;
Summary = cv.DADOSGERAIS.RESUMOCV.TEXTORESUMOCVRH;
Id = cv.NUMEROIDENTIFICADOR;
Idioms = cv.DADOSGERAIS.IDIOMAS.Select(idiom => new Idiom {
Name = idiom.DESCRICAODOIDIOMA,
Reading = idiom.PROFICIENCIADELEITURA.ToString(),
Speaking = idiom.PROFICIENCIADEFALA.ToString(),
Writing = idiom.PROFICIENCIADEESCRITA.ToString(),
Comprehension = idiom.PROFICIENCIADECOMPREENSAO.ToString()
}).ToList();
.DOUTORADO[0].NOMECURSO,
ThesisTitle = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.DOUTORADO[0].TITULODADISSERTACAOTESE,
Areas = Doctorate.ParseKnowledgeAreas(cv),
Keywords = Doctorate.ParseKeywords(cv)
};
}
import camelot
import json
# o cliente deve especificar qual vaga do documento é a de interesse pelo parâmetro <i>
vaga = df[i]
vaga_json = vaga.to_json()
3. Cálculo de pesos: com base nas conexões estabelecidas, o TextRank calcula os pesos
das arestas entre os nós (palavras). Quanto mais frequente for a coocorrência de
duas palavras, maior será o peso da aresta que as conecta;
class TextRank4Keyword():
"""Extract keywords from text"""
if not text:
tr4w = TextRank4Keyword()
tr4w.analyze(text, candidate_pos = ['NOUN', 'PROPN','ADJ'], window_size=3, lower=False)
tr4w.get_keywords(10)
if __name__ == '__main__':
if len(sys.argv)>1:
main(sys.argv[1])
else:
main()
MAE - 1.0858854166666667
aquisições - 1.0201296768707484
Eletrônico - 1.0077157738095237
modelos - 0.9247395833333333
gerenciais - 0.9247395833333333
6 CRONOGRAMA
1ª 2ª 3ª4ª 5ª 6ª 7ª
Figura 2 – Cronograma Inicial.
Processos:
Datas Críticas:
Será apresentado para a banca o realizado até então e o que foi planejado como
próximos passos. Todas essas informações foram descritas no relatório, que será a
base da apresentação.
7 CONCLUSÃO
REFERÊNCIAS
15 RESNICK, P.; VARIAN. Recommender systems. In: Communications of the ACM 40.
New York: Association for Computing Machinery, 1997.
19 CNPQ. Sobre a plataforma Lattes. 2023. 26 abr. de 2023. Disponível em: <https:
//lattes.cnpq.br/>.
23 ROSE, S.; ENGEL, D.; CRAMER, N.; COWLEY, W. Automatic keyword extraction
from individual documents. In: . Text Mining. John Wiley & Sons, Ltd, 2010. cap. 1,
p. 1–20. ISBN 9780470689646. Disponível em: <https://onlinelibrary.wiley.com/doi/abs/
10.1002/9780470689646.ch1>.