Você está na página 1de 40

MINISTÉRIO DA DEFESA

EXÉRCITO BRASILEIRO
DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA
INSTITUTO MILITAR DE ENGENHARIA
CURSO DE GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO

ANDRÉ LUIZ FERNADES VIDAL


BERNARD REZNIK
PEDRO BARROS BASTOS DA SILVA

DESENVOLVIMENTO DE UMA FERRAMENTA DE EXTRAÇÃO DE DADOS


DE MILITARES PARA GESTÃO DO CONHECIMENTO E RECOMENDAÇÃO

RIO DE JANEIRO
2023
ANDRÉ LUIZ FERNADES VIDAL
BERNARD REZNIK
PEDRO BARROS BASTOS DA SILVA

DESENVOLVIMENTO DE UMA FERRAMENTA DE EXTRAÇÃO DE DADOS


DE MILITARES PARA GESTÃO DO CONHECIMENTO E RECOMENDAÇÃO

Projeto Final de Curso apresentado ao Curso de Graduação


em Engenharia da Computação do Instituto Militar de
Engenharia, como requisito parcial para a obtenção do
título de Bacharel em Engenharia da Computação.
Orientador(es): Julio Cesar Duarte, D.Sc.
Eduardo de Almeida Cadorin, D.Sc.
Rafael Hidalgo Olivieri, D.Sc.

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.

Orientador(es): Julio Cesar Duarte, Eduardo de Almeida Cadorin e Rafael


Hidalgo Olivieri.

Projeto Final de Curso (graduação) – Instituto Militar de Engenharia, Engenharia


da Computação, 2023.

1. sistemas de recomendação. aprendizado de máquina. processamento


de linguagem natural. i. Duarte, Julio Cesar (orient.) ii. de Almeida Cadorin,
Eduardo (orient.) iii. Hidalgo Olivieri, Rafael (orient.) iv. Título
RESUMO

O presente artigo descreve a implementação e entrega de um software encomendado pela


AGITEC, com o objetivo de auxiliar no processo de alocação de militares em vagas dentro
do Exército Brasileiro. O software apresenta componentes que realizam o processo de
extração, transformação e carga de dados externos presentes no Currículo Lattes e no
Linkedin, gerando uma base de dados de informações educacionais quanto profissionais dos
militares. Além disso, uma outra componente é composta por um sistema de recomendação
responsável por gerar uma lista ranqueada dos militares candidatos para uma determinada
vaga, com base na análise do currículo destes e nas habilidades exigidas para a vaga,
descritas num documento chamado NCE. O desenvolvimento deste software representa
uma importante contribuição para o Exército Brasileiro, proporcionando maior eficiência
e precisão no processo de alocação de militares em vagas disponíveis.

Palavras-chave: sistemas de recomendação. aprendizado de máquina. processamento de


linguagem natural.
ABSTRACT

This article describes the implementation and delivery of a software commissioned by


AGITEC, aiming to assist in the process of allocating military personnel to positions
within the Brazilian Army. The software includes components that perform the extraction,
transformation, and loading of external data from the Lattes Curriculum and LinkedIn,
generating a database of educational and professional information of the military personnel.
Additionally, another component consists of a recommendation system responsible for
generating a ranked list of candidate military personnel for a specific position based on
the analysis of their curriculum and the required skills described in a document called
NCE. The development of this software represents an important contribution to the
Brazilian Army, providing greater efficiency and accuracy in the process of allocating
military personnel to available positions.

Keywords: recommendation systems. machine learning. natural language processing.


LISTA DE ILUSTRAÇÕES

Figura 1 – Diagrama de atividades UML para o projeto . . . . . . . . . . . . . . . 20

Figura 2 – Cronograma Inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32


SIGLAS

AGITEC Agência de Gestão e Inovação Tecnológica.

AM Aprendizado de Máquina.

API Application Programming Interface.

CNPq Conselho Nacional de Desenvolvimento Científico e Tecnológico.

DCT Departamento de Ciência e Tecnologia.

DGP Departamento Geral de Pessoal.

ETL Extract, Transform and Load.

GC Gestão do Conhecimento.

HTTP Hypertext Transfer Protocol.

IA Inteligência Artificial.

IME Instituto Militar de Engenharia.

IP Internet Protocol.

NCE Necessidade de Conhecimento Específica.

PLN Processamento de Linguagem Natural.

SR Sistema de Recomendação.

UML Unified Modeling Language.

XML Extensible Markup Language.


SUMÁRIO

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

A Gestão do Conhecimento (GC) é uma abordagem que visa maximizar o valor


do conhecimento organizacional por meio de processos que permitem a sua criação, o seu
compartilhamento, o seu armazenamento e a sua utilização de forma eficiente e eficaz. O
conhecimento é um ativo intangível de extrema importância para as organizações e está
diretamente relacionado à sua capacidade de inovar, competir e sobreviver em ambientes
cada vez mais dinâmicos e complexos (1).
Esta área de estudo se preocupa em identificar e capturar o conhecimento tácito
e explícito existente na organização, torná-lo acessível a todos os membros da equipe e
promover sua utilização para a tomada de decisão e solução de problemas. Dessa forma, a
organização não fica refém de indivíduos que concentram informações e conhecimentos
fundamentais para manter a operação da mesma (2).
No contexto organizacional, a GC se torna cada vez mais importante à medida
que a complexidade das tarefas aumenta. Visando realizar estas tarefas complexas efici-
entemente, é de suma importância que as pessoas possuam as qualificações necessárias
para desempenhar as funções a que são destinadas. Entretanto, o processo de alocação
de pessoal em cargos não é trivial e devem-se considerar diversos fatores como educação,
experiência prévia e habilidades do candidato, tanto as hard skills quanto as soft skills (3)
e compará-los com os requisitos inerentes da função a ser assumida.
Nesse sentido, um Sistema de Recomendação (SR) é uma ferramenta útil para
identificar os membros da equipe que possuem as habilidades e os conhecimentos mais
adequados para cada tarefa. O objetivo de um SR é sugerir itens que atendam às neces-
sidades de um usuário em algum aspecto. Geralmente, esses sistemas são utilizados em
contextos onde há muitas opções para escolha e a busca por meio de mecanismos clássicos,
como palavras-chave ou termos de interesse, pode levar a resultados insatisfatórios (4).

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

problema de alocação de recursos humanos em vagas. Este é um desafio para muitas


empresas, especialmente aquelas que possuem muitos funcionários, estão em crescimento
constante ou que realizam projetos simultaneamente (8). A alocação inadequada de recursos
humanos pode levar a uma série de problemas, como a ineficiência na realização do trabalho,
a sobrecarga de trabalho em alguns departamentos e uma possível falta de pessoal em
outros. Para evitar esses problemas, as empresas precisam ter uma compreensão clara das
habilidades, experiências e conhecimentos de seus funcionários e comparar esses fatores
com as necessidades da própria organização, de modo a realizar uma alocação otimizada.

1.2 Caracterização do problema


Mesmo com a importância da utilização da inteligência fornecida por meio de
dados para identificar oportunidades (9), o Exército Brasileiro utiliza, de forma limitada,
todas as fontes de dados disponíveis para consulta (tanto aquelas abertas quanto as da
própria organização), visando entender as qualificações de seus recursos humanos. Desse
modo, a instituição, apesar de conhecer as capacidades de seus integrantes que podem
ter sido desenvolvidas com o apoio da força ou por meios próprios do militar, não as
aproveitam da melhor forma. Nesse contexto, o Exército utiliza o conceito de Necessidade de
Conhecimento Específica (NCE), documento que explicita as competências em determinada
área necessárias para um projeto ou Organização militar, visando qualificar seus recursos
humanos e, como consequência, alocá-los nos projetos estratégicos onde estes podem
contribuir com o conhecimento adquirido.
Porém, pela falta do gerenciamento e uso do conhecimento interno a partir de
rotinas estabelecidas, decisões tomadas acerca da alocação de militares em cargos da Força
não são sempre otimizadas e por isso levam à perda de eficiência. Dessa forma, a escolha
otimizada de militares para vagas determinadas pelas NCE é de suma importância para
melhorar a eficácia das operações da Força.

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:

• Desenvolver um algoritmo de ranqueamento que recebe como entrada um perfil de


integrantes do Exército Brasileiro que podem ser alocados a uma determinada vaga,
por exemplo, especificada por uma NCE e retorna uma lista ordenada dos melhores
candidatos para assumi-la, a partir de heurísticas pré-determinadas; e

• Realizar a extração de dados de fontes disponíveis na web, como o Currículo Lattes,


que por sua vez contém informações essenciais sobre as habilidades individuais
de um candidato a uma vaga. Essas informações serão usadas pelo algoritmo de
ranqueamento, assim como poderão ser consultadas posteriormente para outras
análises e suportar a decisão sendo oferecida.

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.

1.5 Estrutura do Texto


Este texto se divide da seguinte forma:
No Capítulo 2, os conceitos de GC e SR, introduzidos anteriormente, são tratados
com maior profundidade. Também são apresentadas com maiores detalhes as fontes de
dados a serem extraídas e processadas, bem como suas características e modos de acesso
existentes. No Capítulo 3, é realizada uma revisão literária de Projetos Finais de Curso
Capítulo 1. Introdução 12

(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

Nesta seção, serão introduzidos os princípios básicos utilizados durante a elaboração


do projeto, incluindo tanto os conceitos teóricos quanto as tecnologias consideradas.

2.1 Gestão do Conhecimento


A GC é um conceito bastante amplo e o processo de identificação, criação, com-
partilhamento, utilização e armazenamento de informações e dados em uma organização
pode ser entendido como GC. Por meio dela, muitas empresas e organizações tentam
maximizar o aproveitamento dos dados que possuem, com o fim de terem mais eficiência e
economizarem recursos humanos e financeiros.
Intrinsecamente ligado à GC está o Big Data, sendo o termo usado para a coleta,
armazenamento e análise de um grande volume de dados de maneira otimizada. Outro
conceito que caminha junto da GC e do Big Data é o Business Intelligence, cujo foco está
mais relacionado à eficácia das operações de uma empresa, no sentido de monitoramento
de seu desempenho e identificação de problemas.
A GC envolve a criação de uma cultura na organização, ao envolver a dissemi-
nação eficiente de informações entre os funcionários de uma empresa, o que está ligado
diretamente aos seus hábitos de registro de informações e seu compartilhamento. Segundo
Humantech(12), a GC consegue potencializar o surgimento de soluções para problemas re-
correntes, por deixarem de ser criadas a partir do zero, e passando a terem criação intuitiva.
De acordo com Batista(13), as práticas de GC são: capturar e reutilizar o conhecimento
estruturado e as lições aprendidas com prática, identificar fontes e redes de expertise,
estruturar e mapear conhecimentos necessários para aumentar o desempenho, medir e
controlar o valor financeiro do conhecimento e sintetizar e compartilhar o conhecimento
vindo de terceiros. Conforme relatado por Sardagna(14), sua primeira etapa é a gestão
do capital intelectual, uma vez que muito do conhecimento está nas pessoas e parte do
desafio é descobrir a melhor forma de utilizar as informações conhecidas por todos. Isso
objetiva dois pontos principais: conseguir sanar dependências de conhecimento possuídos
por poucas pessoas e tornar plenamente utilizável o que algumas delas conhecem. Desse
modo, fica claro o papel da gestão de conhecimento para a otimização dos processos em
uma empresa e também da estabilidade de seu funcionamento, no sentido que sofre menos
riscos de ter suas ações paralisadas por uma perda repentina em seus recursos humanos.
Capítulo 2. Conceitos Básicos 14

2.2 Sistemas de Recomendação


O tipo de software que sugere melhores opções de produtos, serviços, conteúdos e
outros produtos, como no caso desse trabalho, sendo perfis profissionais, é chamado de
sistema de recomendação. Eles são usados em diversos sistemas na atualidade, como na
recomendação de conteúdo em sites como o YouTube ou no direcionamento de propagandas
na Internet.
Tais sistemas surgiram como uma resposta à dificuldade das pessoas de escolher
dentre um grande conjunto de itens com um alto número de alternativas, e vieram
evoluindo para trabalharem com bases de dados extensas e de modo a recomendações não
triviais pudessem ser alcançadas, sendo, segundo Resnick e Varian(15), até superiores às
recomendações humanas em ambientes onde o sistema está mais desenvolvido. O problema
formal que eles se propõem a resolver é o seguinte: para um conjunto de usuários e um
conjunto de itens, existe uma função que retorna o nível de utilidade de um item para
certo usuário. Um sistema de recomendação deve fornecer, para cada usuário, o produto
cujo retorno da função de utilidade é máximo no conjunto de produtos. Portanto, parte
do problema reside em extrapolar essa função para pares usuário-produto que ainda não
foram definidos anteriormente (16).

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.

2.4 Descrição da fonte de dados


Para a elaboração do sistema decisor foi usada a fonte de dados o currículo Lattes,
uma das principais plataformas no Brasil para o registro e divulgação das atividades
acadêmicas, incluindo informações sobre projetos de pesquisa, experiências profissionais
e formação acadêmica. Ele é organizado pelo Conselho Nacional de Desenvolvimento
Capítulo 2. Conceitos Básicos 15

Científico e Tecnológico (CNPq) servindo como importante ferramenta de avaliação da


trajetória científica de um profissional. Por sua riqueza de informações e sua crescente
confiabilidade e abrangência, ele se tornou um padrão nacional no registro da vida pregressa
e atual dos estudantes e pesquisadores do país (19).
Dentre as informações possíveis de serem encontradas nele, estão a formação acadê-
mica/titulação, atuação profissional, áreas de atuação, projetos, idiomas, prêmios e títulos,
artigos, livros e capítulos, trabalhos publicados em anais de eventos, texto em jornal ou
revista, apresentação de trabalho e palestra, assessoria e consultoria, extensão tecnoló-
gica, softwares sem registro, trabalhos técnicos, entrevistas, mesas redondas, programas
e comentários na mídia, redes sociais, websites, blogs, patentes e registros, atuações na
popularização da ciência e tecnologia, orientações e supervisões, participações em bancas
e eventos, além de citações bibliográficas (19).
16

3 TRABALHOS ANTERIORES

Alguns trabalhos anteriores buscaram construir com soluções para auxiliar à


AGITEC com a GC e a construção de uma base de dados de maneira que se fornecesse
uma escolha por meio de inteligência artificial para os cursos solicitados por intermédio
das NCE. Nesta seção, abordam-se dois trabalhos anteriores, sendo seus objetivos à época
em que foram realizados e o que foi realmente alcançado e o que poderá ser utilizado no
trabalho atual.

3.1 Sistema para Mineração de Dados de Gestão do Conhecimento


nos Boletins do Exército
O primeiro projeto (20) tinha como objetivo construir um sistema de Business
Intelligence com os dados presentes em Boletins do Exército. O problema encontrado na
época era que não havia conhecimento estruturado sobre feitos passados dos candidatos às
vagas, sendo difícil a decisão baseada em conhecimento estratégico sobre quais seriam os
melhores candidatos para aqueles cursos para atentar às demandas de conhecimento das
NCEs. Entretanto, a hipótese era de que essas informações existiam nos Boletins Internos
do Exército e uma ferramenta que conseguisse agregar esses dados e construir informações
poderia ser a base que auxiliaria na tomada de decisão, tanto por meio de visualizações dos
dados quanto por meio do uso de algoritmos de decisão ingerindo esses dados históricos.
A solução, portanto, consistiu em um crawler que coletava os boletins internos
em formato pdf e os armazenava em um Datalake. Após isso, havia uma extração do
texto relevante do pdf ao identificar palavras-chave que se mostravam relevantes. Por
exemplo, os parágrafos que iniciavam com as palavras “Designar” ou “Homologar” e que
continham em seu interior as expressões “para participar(em)” ou “para frequentar(em)”
foram identificados como importantes. Em seguida, ferramentas de PLN foram utilizadas
para identificar entidades importantes nas sentenças e armazenar os dados de maneira
estruturada para construção da visualização.
Dessa forma, a entrega final consistiu em um pipeline para a extração dos dados, um
módulo de extração e agrupamento das informações utilizando técnicas de processamento de
linguagem. Ao final do trabalho, houve uma análise quantitativa com relação à identificação
de entidades textuais com resultados razoavelmente positivos. Contudo, como esse não era
o foco do trabalho, o próprio autor identificou oportunidades de melhoria como uma análise
mais profunda nos dados não-estruturados e como seria feita a anotação e o agrupamento
destes para enfim apresentar a visualização.
Capítulo 3. Trabalhos anteriores 17

3.2 Sistema de Recomendação para Gestão do Conhecimento de


Pessoal
O trabalho seguinte (10) possuiu um objetivo diferente do primeiro, que era
ranquear candidatos a partir de dados extraídos publicamente sobre militares com base
na similaridade das experiências com a NCE. Uma ferramenta como essa aumenta a
velocidade da tomada de decisão e a qualifica, pois a torna mais assertiva e eficaz. Isso é
feito por meio de algoritmos que permitem a sintetização e a comparação de informações
textuais.
Dessa forma, a solução final apresentada foi uma ferramenta de extração de dados
de fontes diferentes (currículo Lattes e dados do Portal da Transparência). Assim, foi feito
um agregamento das entidades no texto e a extração de atributos para o conjunto de
dados utilizando ferramentas de PLN com duas principais ideias:

1. Filtrar palavras-chave ao analisá-las no contexto de uso com n-gramas(combinações


de palavras que ocorrem juntas no contexto de PLN); e

2. Transformar o espaço de palavras texto em um espaço vetorial numérico.

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

A solução desenvolvida pode ser descrita em um alto nível a partir do diagrama


descrito na Figura 1. Esse é um exemplo de um diagrama de atividades, previsto no padrão
Unified Modeling Language (UML), e exibe o fluxo processual para controle da solução e
é importante para se obter a visão completa do processo. Portanto, nesse capítulo, serão
descritas com detalhes cada uma das etapas que compõem a proposta da solução a ser
desenvolvida, além de serem apresentadas tanto as entradas quanto as saídas de cada uma
destas etapas. Dessa maneira, será possível entender como os componentes do sistema se
comunicam e solucionam o problema tratado neste trabalho.

4.1 Identificação da vaga


É de suma importância que o Exército tenha recursos humanos altamente qua-
lificados em seu quadro de pessoas para realizar projetos e iniciativas que envolvem
complexidade técnica elevada. Visando suprir o Exército com profissionais altamente
qualificados, vagas são criadas para realizar capacitações e posterior alocação dos militares
em Organizações Militares e/ou projetos específicos. De modo geral, uma vaga descreve o
universo de possíveis candidatos que podem concorrer a ela, bem como as capacidades
técnicas que serão tema para a qualificação proposta. Por exemplo, o Exército utiliza o
conceito de NCE como etapa preliminar do processo de planejamento da capacitação de
recursos humanos, base para definição dos cursos de pós-graduação que serão realizados
na linha de ensino militar científico tecnológico.
A NCE explicita as competências em determinada área necessárias para um projeto
ou Organização Militar, indicando assim a vaga correspondente. Nessa etapa, é necessário
identificar a vaga de interesse e as próximas etapas do fluxo irão culminar na escolha dos
melhores candidatos para esta vaga em específico.

4.2 Extração do texto da vaga


Uma vaga pode estar descrita de formas distintas no âmbito do Exército Brasileiro.
De modo a permitir que a máquina processe os dados contidos na vaga, ela necessita
receber as informações desta de maneira estruturada. Portanto, nessa etapa o foco é realizar
a extração do texto da vaga. Mais especificamente, nessa etapa se realiza a extração da
descrição da vaga, bem como do universo de militares para os quais a vaga é destinada.
Após o fornecimento da NCE de interesse, será usada uma biblioteca cujo objetivo
é extrair o texto de interesse relativo às vagas. As informações extraídas da NCE permitem
Capítulo 4. Proposta 20

Figura 1 – Diagrama de atividades UML para o projeto


Capítulo 4. Proposta 21

realizar a seleção do universo de candidatos e seguir para a próxima etapa do fluxo: a


extração de palavras-chave da NCE.

4.3 Universo de candidatos


As vagas possuem requisitos que restringem o universo de candidatos, assim, uma
vaga não é aberta para todos os militares do Exército Brasileiro. Dessa forma, existem pré-
requisitos para o militar estar apto a candidatar-se. Os requisitos permeiam as restrições
referentes ao posto/graduação e à arma, quadro ou serviço ao qual o militar pertence.
Existem também restrições relacionadas a experiências ou qualificações prévias. Como
exemplo, poderíamos ter vagas para doutorado que, usualmente, requerem do candidato
possuir um mestrado. De modo semelhante, vagas de pós-doutorado pressupõe que o
candidato já possua um doutorado. Assim, é possível restringir o universo da seleção
para os candidatos daquela vaga em específico. Além disso, há um interesse em analisar
as competências de todos os militares presentes no universo de seleção, configurando,
portanto, uma busca ativa por candidatos.

4.4 Extração da lista de candidatos


Por conta do requisito da busca ativa de candidatos, os dados a serem utilizados
para a obtenção da lista de candidatos precisam estar disponíveis sem serem formalmente
pedidos aos candidatos. Parte da filtragem dos candidatos acontece no momento de
uma escolha inicial, em que requisitos como posto/graduação, arma, quadro ou serviço
são utilizados. Existem diversas fontes possíveis para se obter o universo de militares
candidatos a uma vaga. Dentre estas, podemos citar o Portal da Transparência (21) e o
Portal Departamento Geral de Pessoal (DGP). No primeiro, estão disponíveis somente
o nome e o posto/graduação do militar, enquanto o segundo apresenta uma gama de
informações maior. O Portal DGP compreende tanto dados pessoais dos militares, bem
como os cursos, estágios e diplomas adquiridos, dentre outras informações. Em relação
ao acesso às plataformas, o Portal da Transparência é aberto para o público, enquanto o
Portal DGP é fechado e só pode ser acessado por meio de cadastro (22).

4.5 Extração de Informações do candidato via Lattes


As informações contidas no Currículo Lattes são fundamentais para avaliar as capa-
cidades técnicas dos candidatos em questão. Esta é a principal fonte de dados consultada
no presente trabalho. A partir da lista de candidatos adquirida na etapa anterior, estas são
posteriormente utilizadas para encontrar o perfil do militar na plataforma do Currículo
Lattes, obtendo assim o identificador do perfil do militar.
Capítulo 4. Proposta 22

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.

4.6 Extração de palavras-chave da vaga


Nesta etapa são aplicadas técnicas de PLN no texto puro de uma determinada vaga
extraído na etapa anterior. Mais especificamente, será feita a análise de palavras-chave,
de modo a obter as habilidades mais importantes para a vaga de maneira automática.
Existem diversas maneiras de realizar esse processo, incluindo o uso de AM, sistemas
baseados em regras pré-determinadas ou sistemas baseados em dicionários. No geral, o
objetivo desses métodos é extrair a semântica do texto, identificando os elementos mais
importantes que o compõem, como o contexto, técnicas e ferramentas específicas para
o tema descrito na vaga (23). Essas informações serão essenciais para a atribuição da
pontuação dos candidatos nas etapas posteriores.

4.7 Ingestão de dados num banco de dados


Após a extração, os dados obtidos são persistidos em um banco de dados. Nesta
etapa, são armazenados tanto os dados relativos aos candidatos, quanto os relativos à
vagas. Mais especificamente, serão persistidos tanto o texto da descrição da vaga em si
quanto as palavras-chave da descrição, ambos extraídos nas etapas anteriores do fluxo. A
importância de existir um banco de dados é que este fornece a possibilidade de acesso
de forma organizada aos dados ingeridos neste, bem como permite configurar recursos
especiais, como replicação para casos em que os dados não podem ser perdidos.
Pode-se utilizar tanto bancos de dados relacionais quanto não relacionais para o
armazenamento destas informações, a princípio. Decidiu-se seguir com a implementação
de um banco de dados não relacional, uma vez que os currículos são fornecidos também
em formato de documento. Mais especificamente, o currículo fornecido pelo CNPq fornece
informações de maneira aninhada, estruturado com objetos e seus atributos correspondentes
de forma hierárquica. Tanto as informações relativas às vagas quanto às relativas aos
currículos são armazenadas. Além disso, a flexibilidade do modelo não-relacional facilita
iterações futuras como adição ou remoção de campos, o que pode ocorrer após resultados
dos modelos de Inteligência Artificial (IA).
Capítulo 4. Proposta 23

4.8 Cálculo das similaridades entre candidatos e vagas


Para cada vaga, haverá uma lista de candidatos composta pelo universo de militares
que cumprem os pré-requisitos da vaga. Essa lista contem dados textuais referentes à
experiência prévia deles e virão do Lattes. As experiências profissionais ficam agrupadas,
assim como os certificados ou as línguas que o candidato possui em seu perfil. Dessa forma,
o tratamento de cada parte do texto pode ser feito de maneira isolada, possibilitando a
criação de variáveis que podem ser utilizadas como atributos para os modelos de IA.
Línguas ou certificados do candidato serão usados para preencher variáveis booleanas
que representariam “Possui domínio em língua estrangeira” ou “Possui certificado em areá
de conhecimento relacionada”. Para as experiências, serão usadas técnicas de PLN para
filtrar e identificar palavras-chave no texto, ideia essa semelhante à extração da descrição
da vaga. A partir disso, é possível gerar um espaço vetorial de palavras e adicionar tanto a
descrição textual quanto as experiências dos candidatos. Dessa forma, restaria transformar
o espaço vetorial de modo que a distância (existem diversas possíveis, a euclidiana ou
relativa ao cosseno, por exemplo) entre um vetor caracterizando as habilidades de um
candidato e outro vetor caracterizando a descrição da vaga, retorne a similaridade entre
eles.

4.9 Ordenação dos candidatos para a vaga


Ao final do cálculo das variáveis booleanas e da similaridade das experiências com
a descrição da vaga, resta identificar as regras de negócio para atribuir pesos a cada regra
e uni-los de forma que se obtenha um valor numérico único para cada candidato. Dessa
maneira, torna-se possível ordenar cada candidato para uma vaga específica conforme a
pontuação calculada a partir do método proposto.
24

5 IMPLEMENTAÇÃO

Neste capítulo, é apresentada a implementação desenvolvida pelos autores para o


presente trabalho. Inicialmente, são discutidos os avanços na fonte de dados com relação
ao trabalho.

5.1 Extração dos candidatos do Universo de Candidatos


Essa seção mostra a implementação para a filtragem do universo dos candidatos
que cumprem os requisitos para determinada vaga, a obtenção e o armazenamento dos
dados destes.

5.1.1 Fontes de dados utilizadas


Após a experiência anterior (10), onde o crawler era capaz apenas de obter as
informações iniciais dos perfis, foi decidido que a utilização da Application Programming
Interface (API) da plataforma poderia ser útil por expor todas as informações disponíveis.
Dessa forma, o código de extração dos dados torna-se mais robusto, visto que crawlers
dependem da formatação da página, sendo sujeitos a mudanças, necessitando de constantes
atualizações.
Entretanto, como a ideia da busca ativa por candidatos é uma funcionalidade
de interesse, é preciso sem intervenção dos possíveis candidatos obter o identificador do
currículo Lattes dos mesmos. Desse modo, mesmo que agora o sistema seja feito consumindo
a API do Lattes, é preciso uma maneira de se obter dados sobre o universo de candidatos.
Para isso, foi utilizado, inicialmente, o Portal da Transparência.

5.1.1.1 Portal da Transparência

O Portal da Transparência está sendo usado com o objetivo fim de descobrir os


nomes de militares do exército de uma dada patente. Por meio desse serviço, é possível
baixar uma lista de todos os militares por meio do seguinte método já implementado,
como mostrado no Código 5.1.

public async void GetNameAndRankFile(string month, string year) {


using var client = new HttpClient();
client.DefaultRequestHeaders.TryAddWithoutValidation("User-Agent", "C# App");
uri += year + month + "_Militares";
using(FileStream output = new FileStream(zipPath, FileMode.Create)) {
await client.GetAsync(uri).Result.Content.CopyToAsync(output);
}
Capítulo 5. Implementação 25

System.IO.Compression.ZipFile.ExtractToDirectory(zipPath, extractPath);
}

Código 5.1 – Código para receber dados do Portal da Transparência


Nesse método é feita uma requisição Hypertext Transfer Protocol (HTTP) para o
endereço do Portal de Transparência responsável por iniciar o download do arquivo que
contém o nome e o posto do militar. A resposta é um arquivo compactado, extraído para
a pasta cujo caminho é “zipPath”.
Os dados são filtrados posteriormente utilizando um script com a biblioteca Pandas,
de modo a salvar uma lista de militares de uma dada patente que servirá para alimentar
um crawler que procurará os seus identificadores Lattes. A parte central do código se
encontra no Código 5.2.

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)

Código 5.2 – Método de filtrar dados do Portal da Transparência


No código foram filtrados os nomes das linhas cujas colunas “ORG_LOTACAO” e
“DESCRICAO_CARGO” são iguais à “Comando do Exército” e à patente passada como
argumento.
Os dados do posto e nome não são suficientes para utilizar somente do Serviço Web
do Lattes na próxima etapa. Um passo intermediário foi implementado para resolver este
problema. Contudo, ao se utilizar o Portal do DGP, ou fonte similar, tal passo não seria
mais necessário.

5.1.1.2 Plataforma Lattes

Para obter acesso ao Lattes, foi necessário solicitar, de maneira institucional, a


permissão de uso da API por meio de um requerimento ao CNPq. Após essa solicitação,
o Instituto Militar de Engenharia (IME) passou a possuir acesso à API por meio de
dois endereços IP estáticos. O Serviço Web disponibilizado possui as seguintes rotas de
interesse:

1. Download do currículo compactado usando o identificador;


Capítulo 5. Implementação 26

2. Descoberta do identificador pelo CPF;

3. Descoberta do identificador pelo nome completo e data de nascimento;

Conforme já relatado, com a melhoria da obtenção dos dados com a substituição do


Portal da Transparência pelo portal DGP, as rotas relacionadas a obtenção do identificador,
com base em algum dado pessoal, seriam utilizadas, não sendo mais necessário o script
que acessa o Portal da Transparência apresentado na subseção 5.1.1.1.
Para contornar o fato de não haver dados pessoais suficientes para a utilização
das rotas mencionadas, um scraper foi implementado com base no (10), sendo reescrito e
modificado para, a partir de uma lista de nomes desejados, salvar os identificadores dos
currículos Lattes em um arquivo de texto. Essa lista de identificadores é utilizada para
alimentar o sistema que consome a API do Lattes. A parte principal da nova versão do
scraper se encontra no Código 5.3.

def extractId(driver, searchTabId, name):


insertName(driver, name)
setGeneralSearch(driver)
#search
driver.find_element(By.XPATH,searchXPath).click()
sleep(1)
#click name
driver.find_element(By.XPATH,namePath).click()
sleep(1)
#open lattes cv
driver.find_element(By.XPATH,'//*[@id="idbtnabrircurriculo"]').click()
sleep(1)
changeTab(driver, searchTabId)
for word in desiredWords:
if hasOcurrences(driver, word):
return driver.find_element(By.XPATH, idLattesPath).text

Código 5.3 – Parte do scraper responsável por pegar os ID’s Lattes


Embora a solução atual funcione, uma solução utilizando as rotas para obter os
identificadores é melhor. Não depender de elementos da página como buscar usando XPATH
tornam o código menos propenso a erros visto que esses elementos mudam constantemente.
Além disso, não haveria o problema de encontrar diferentes perfis de mesmo nome no
Lattes e precisar encontrar uma maneira de resolução da desambiguação.

5.1.2 Transformações nos dados


Tendo definido as rotas de interesse do Serviço Web do Lattes a serem utilizadas,
é necessário um sistema capaz de consumir os recursos expostos e transformar os dados
Capítulo 5. Implementação 27

para um formato a ser utilizado pelos modelos de IA. Assim, uma API foi desenvolvida
com uma única rota, que possui o seguinte funcionamento:

1. Recebe uma requisição HTTP com o identificador de um currículo;

2. Verifica se o currículo já foi baixado anteriormente com sucesso e se isso foi feito há
menos de 90 dias;

3. Caso verdade, transforma o Extensible Markup Language (XML) em um objeto e


salva o currículo no banco de dados;

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;

public async Task<CurriculumVitae?> ProcessCurriculumByCnpqId(string id)


{
if (!TryGetLocalCopyCurriculum(id, out var curriculum))
{
var compressedCurriculum = await _lattesClient.getCurriculoCompactadoAsync(id);
var response = _decoder.DecodeResponse(compressedCurriculum, id);
if (response == DecoderStatus.NotFound)
return null;
curriculum = _parser.ParseFromFileName(CurriculumVitae.GenerateFileName(id));
}

if (curriculum.Id is null)
return null;

_repository.Save(curriculum);
return curriculum;
}

private bool TryGetLocalCopyCurriculum(string id, out CurriculumVitae curriculum)


{
curriculum = _parser.ParseFromFileName(CurriculumVitae.GenerateFileName(id));
return curriculum.Id is not null;
}

Código 5.4 – Trecho da lógica de transformação e armazenamento do currículo


O Código 5.4 demonstra a lógica apresentada do fluxo da rota mencionada anterior-
mente. No item 3 do funcionamento da rota, uma classe mais compacta foi criada a partir
do XML schema, a qual foi transferida para um banco de dados gerado no MongoDB
usando uma API personalizada. O módulo de descompressão e decodificação da resposta
do Serviço Web do Lattes utiliza uma classe gerada automaticamente com o schema do
Capítulo 5. Implementação 28

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.

public CurriculumVitae(CurriculumVitaeDTO? cv)


{
if (cv is null)
return;

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();

Undergrad = new Undergrad


{
Institution = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.GRADUACAO[0].NOMEINSTITUICAO,
Course = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.GRADUACAO[0].NOMECURSO,
ThesisTitle = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.GRADUACAO[0].TITULODOTRABALHODECONCLUSAODECURSO,
};

Masters = new Masters


{
Institution = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.MESTRADO[0].NOMEINSTITUICAO,
Course = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.MESTRADO[0].NOMECURSO,
ThesisTitle = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.MESTRADO[0].TITULODADISSERTACAOTESE,
Areas = Masters.ParseKnowledgeAreas(cv),
Keywords = Masters.ParseKeywords(cv)
};

Doctorate = new Doctorate


{
Institution = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.DOUTORADO[0].NOMEINSTITUICAO,
Course = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
Capítulo 5. Implementação 29

.DOUTORADO[0].NOMECURSO,
ThesisTitle = cv.DADOSGERAIS.FORMACAOACADEMICATITULACAO
.DOUTORADO[0].TITULODADISSERTACAOTESE,
Areas = Doctorate.ParseKnowledgeAreas(cv),
Keywords = Doctorate.ParseKeywords(cv)
};
}

Código 5.5 – Construtor do currículo

5.2 Extração e processamento da Vaga


5.2.1 Extração do texto da vaga
No caso de uso desenvolvido durante este projeto final de curso, as vagas e, portanto,
as NCE estão contidas no formato de um PDF. Dessa maneira, é necessário realizar a
extração do texto no formato PDF para se obter um recurso que a máquina consiga
analisar. Dessa maneira, o seguinte script, desenvolvido anteriormente no trabalho descrito
na seção 3.2, é responsável por realizar esta tarefa. Ele recebe como entrada o arquivo
PDF onde as vagas estão descritas e carrega em memória um objeto do tipo Dataframe,
que agrupa todas as informações da vaga em formato tabular. Depois, é necessário que
o usuário determine qual vaga da tabela de vagas é de interesse dele a partir de um
parâmetro a ser recebido pelo script, que irá filtrar somente as informações desta vaga. O
objeto contendo as informações da vaga pode então ser transformado para um arquivo
JSON, para ser persistido no banco de dados não relacional utilizado na solução, e a
descrição textual da vaga pode ser obtida dado que está contida neste objeto.

import camelot
import json

tables = camelot.read_pdf('sepbe51-21_port_113-dct.pdf', pages='all')

# o título está na linha 0


# os nomes das colunas estão na linha 1
# os nomes das colunas multilevel estão na linha 2

# rename columns and append similar dataframes (after)


df = tables[1].df
df.columns = ['Código NCE/2023',
'OM Solicitante',
'Posto',
'Perfil', # quadro a que o oficial pertence
'Conhecimento Específico',
Capítulo 5. Implementação 30

'Aplicação/Período de Aplicação do Conhecimento (PAC)',


'Instituição/Local',
'Programa',
'Nível Curso',
'OEE',
'Estratégia',
'PCM',
'Classificação após o curso',
'Prioridade DCT']

# o cliente deve especificar qual vaga do documento é a de interesse pelo parâmetro <i>

vaga = df[i]
vaga_json = vaga.to_json()

texto_vaga = vaga["Conhecimento Específico"]

Código 5.6 – Script de extração do texto da vaga

5.2.2 Extração das palavras-chave da vaga


Munidos da descrição textual da vaga, extraída na etapa anterior, o próximo passo
é realizar a extração das suas palavras-chave. O algoritmo utilizado para implementar
tarefa chama-se TextRank. O algoritmo TextRank é uma técnica de processamento de
linguagem natural usada para extrair palavras-chave relevantes de um texto. Inspirado
no algoritmo PageRank do Google, o TextRank trata o texto como um grafo, onde as
palavras são nós e as conexões entre elas são arestas ponderadas. O processo de extração
de palavras-chave usando o TextRank pode ser resumido em alguns passos:

1. Construção do grafo: o texto é dividido em palavras ou tokens, e um grafo é construído


onde cada palavra é representada por um nó;

2. Definição de conexões: o algoritmo identifica a coocorrência de palavras no texto, ou


seja, quais palavras aparecem próximas uma da outra. A proximidade é geralmente
definida por uma janela de palavras;

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;

4. Iteração do algoritmo: o algoritmo TextRank realiza várias iterações para calcular a


relevância de cada palavra-chave. Durante essas iterações, os pesos são atualizados e
recalculados para refletir a importância relativa de cada palavra.
Capítulo 5. Implementação 31

5. Classificação das palavras-chave: após as iterações, as palavras são classificadas de


acordo com seus pesos, e as que possuem os pesos mais altos são consideradas as
palavras-chave mais relevantes do texto.

class TextRank4Keyword():
"""Extract keywords from text"""

### implementação da classe

def main(text = None):

if not text:

# um exemplo de texto extraído de uma NCE como entrada


text = '''Estudo de modelos de multicritérios para gestão
de aquisições e estoques de equipamentos e suprimentos
de equipamentos de Sistemas de Guerra Eletrônica, em
especial, postos táticos de Medidas de Apoio à Guerra
Eletrônica (MAGE) e Medidas de Ataque Eletrônico (MAE),
visando otimizar os processos gerenciais de decisão.'''

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()

Código 5.7 – Script de extração de palavras-chave


Após execução, o código retorna uma lista com as palavras-chave do texto, assim
como seu peso relativo. Estas palavras são posteriormente utilizadas na comparação com
o currículo do candidato para se verificar se existem semelhanças entre a formação do
candidato e os requisitos da vaga.

MAE - 1.0858854166666667
aquisições - 1.0201296768707484
Eletrônico - 1.0077157738095237
modelos - 0.9247395833333333
gerenciais - 0.9247395833333333

Código 5.8 – Resultado da execução do script de extração das palavras-chave


32

6 CRONOGRAMA

Na Figura 2 é apresentado o gráfico de Gantt relativo ao cronograma planejado


para o projeto ao decorrer do ano, onde cada mês é dividido em quatro semanas. Na
representação usada, as barras horizontais azuis fazem referência aos processos, enquanto
os prazos críticos estão representados por linhas verticais vermelhas, cujas descrições estão
na sequência.

Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro


1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
1º 2º 3º 6º 7º 10º 12º 15º
4º 8º 11º 13º 16º
5º 9º 14º

1ª 2ª 3ª4ª 5ª 6ª 7ª
Figura 2 – Cronograma Inicial.

Processos:

1º: Leitura de Trabalhos Anteriores:


Foram analisados os dois trabalhos de Fernandes, Henriques e Filardi(10) e Soares(20),
onde se identificaram as dificuldades encontradas pelas equipes e as oportunidades
de melhoria nos desenvolvimentos.

2º: Compreensão do código e limitações de Trabalhos Anteriores: Foram analisados


os códigos do trabalho de Fernandes, Henriques e Filardi(10), onde foi verificado
que o uso do currículo Lattes limitou-se apenas ao resumo devido a não possuírem
acesso automatizado aos currículos como um todo. O mesmo foi feito no trabalho de
Soares(20), onde foram usados Boletins Internos, entretanto para o nosso trabalho
descartamos o uso porque sua obtenção por essa ser vinculada ao acesso da intranet
das Organizações Militares, rede a qual não temos acesso.

3º: Teste do uso de automação na página do Currículo Lattes:


Foi constatado que após acessar por meio de navegadores comuns a página de diversos
currículos Lattes, é imposta uma verificação antirrobôs, a qual impossibilita o acesso
integral aos currículos de forma automatizada usando-se apenas navegadores web.

4º: Processo de solicitação da API do Currículo Lattes:


Capítulo 6. Cronograma 33

Foi pedido ao CNPq o acesso à ferramenta de extração de currículos Lattes, obtendo-se


a resposta da necessidade de um pedido institucional contendo termos de respon-
sabilidade e justificativa de uso, bem como os responsáveis técnicos e assinaturas
desses responsáveis e da autoridade máxima da instituição.

5º: Teste do uso de automação na página do LinkedIn:


Foi criado um script para buscar e acessar perfis do LinkedIn a partir de uma lista
de nomes. Foi constatado que seu uso é interceptado por meio de um pedido de
login vinculado a uma verificação antirrobôs, o qual não se recomenda contornar.
Por conta disso, o acesso automatizado ao LinkedIn foi descartado, uma vez que não
há uma forma automatizada e gratuita disponível.

6º: Implementação da automação em currículos do LinkedIn Padronizados:


Verificou-se que solicitar aos usuários enviar o arquivo PDF gerado pelo LinkedIn po-
deria ser uma alternativa. Dado que o arquivo é padronizado, seria possível construir
um leitor automatizado para eles, que retiraria os campos importantes para posterior
tratamento. Esse leitor teve sua elaboração iniciada, porém foi descontinuado em
função do encerramento do uso do LinkedIn como fonte de dados em virtude de ser
um requisito não esperar que os candidatos se inscrevam na vaga.

7º: Testes de migração dos dados do currículo Lattes após recebidos:


Foi gerada uma classe reduzida a partir do XML schema, que foi migrada para
um banco de dados gerado no MongoDB a partir de uma API própria, que será
incrementada posteriormente.

8º: Testes e extração de currículos Lattes por meio da API do CNPq:


Foram verificados os problemas de acesso e de permissão. As dúvidas geradas foram
enviadas ao CNPq, que até o momento ainda não as respondeu de maneira adequada.

9º: Extração das palavras-chave do texto das NCE:


Ocorrerá o aprimoramento dos inputs passados para o algoritmo usado, ou possivel-
mente o uso de um melhor, a fim de reconhecer palavras-chave compostas e mais
pertinentes do texto das NCE.

10º: Finalização da estrutura de armazenamento dos Currículos:


Finalização da classe simplificada gerada a partir das informações disponíveis nos
currículos, bem como da organização de nomes no banco do MongoDB.

11º: Finalização do scraper do CNPq:


Implementação da desambiguação caso haja mais de um resultado para dado nome
na busca geral, procurando na lista de nomes aqueles com palavras-chave vinculadas
ao exército e parando de percorrer os resultados após encontrar o primeiro.
Capítulo 6. Cronograma 34

12º: Elaboração da métrica de classificação dos Currículos:


Uma função de ranqueamento será esboçada a partir das informações fornecidas
pelos orientadores a respeito do que eles consideram mais importantes para classificar
candidatos, formalizando-se parâmetros (como cursos ou experiências na área) e seus
pesos detalhadamente (por exemplo, o quanto que uma pós-graduação importa mais
do que um certo período de experiência operacional na área). A abordagem de utilizar
classificações antigas para alimentar um modelo de aprendizado foi descartada uma
vez que não há registros suficientes de ranqueamentos passados.

13º: Reconhecimento das palavras-chave no Currículo:


Uma vez conhecidas as palavras-chave, será estudado o uso de linguagem natural
visando fazer a correta leitura dos currículos a fim de que possam ser identificados
os resultados da extração das palavras-chave das NCE.

14º: Implantação da integração da API na máquina virtual do IME:


Os módulos de extração de currículo, interpretação de NCE, análise de currículos e
suas classificação serão devidamente interligados na

15º: Elaboração de manuais do sistema e para o uso da AGITEC:


A documentação será criada para descrever as especificações, arquitetura, design, e
implementação do sistema de extração de dados e classificação. Ela incluirá diagramas,
manuais de usuário, guias de instalação e comentários nas funções e parâmetros ao
longo dos códigos escritos. Isso tem por objetivo garantir a qualidade do sistema, a
rastreabilidade das mudanças e a continuidade do desenvolvimento.

16º: Acompanhamento do acesso ao sistema pela AGITEC:


Os autores do projeto darão suporte na primeira semana de uso na AGITEC para
identificar a causa de possíveis problemas e implementar uma solução o mais rápido
possível. É fundamental que as correções sejam testadas em um ambiente semelhante
ao de lá antes de serem implementadas para garantir que não causem novos problemas
ou afetem negativamente o desempenho do sistema, sendo assim será considerado
criar uma máquina virtual com o mesmo sistema operacional das máquinas do
ambiente da AGITEC.

Datas Críticas:

1ª: Prazo limite para a entrega do 1º relatório: 18 de maio


Deve ser feita no mínimo 5 dias antes da apresentação.

2ª: Apresentação do 1º relatório: 22 de maio


Capítulo 6. Cronograma 35

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.

3ª: Prazo limite para a entrega do 2º relatório: 25 de julho


Tal como a primeira data, deve ser feita no mínimo 5 dias antes da apresentação do
segundo relatório.

4ª: Apresentação do 2º relatório: 31 de julho


Assim como a segunda data crítica, aqui será apresentado para a banca o realizado
até esse próximo momento e o que foi planejado como próximos passos. Todas essas
informações serão descritas no relatório, que será a base da apresentação.

5ª: Início da Semana de Verificações Correntes no IME: 22 de agosto a 1º de setembro


Historicamente, nos dias compreendidos por essas duas semanas a produtividade dos
alunos é significativamente reduzida em função das semanas de avaliações do IME,
na qual ocorre uma prova para cada disciplina do semestre.

6ª: Apresentação final: dias 06, 09, 10 e 11 outubro


O dia da apresentação final para esse projeto será especificada mais próxima à
véspera, e assim poderá estabelecer-se uma data também para a entrega do relatório
final, que deverá ocorrer alguns dias antes da apresentação final. Essa apresentação
conterá tudo que foi realizado no projeto, os pontos de melhoria e uma análise geral
da experiência da construção do sistema requerido.

7ª: Entrega final: 18 outubro


Até essa data, o sistema de classificação deverá estar em sua forma final nas máquinas
usuárias da AGITEC.
36

7 CONCLUSÃO

A GC, processo de identificar, capturar, armazenar, compartilhar e aplicar in-


formações relevantes dentro de uma organização para melhorar a tomada de decisões e
impulsionar a inovação, foi reconhecida pela AGITEC como algo a ser posto em prática
para atender a necessidade de tornar menos manual o trabalho de selecionar candidatos
para as várias necessidades do Exército no que diz respeito a indicação a cursos e missões
para o pessoal que já está na força.
Nesse contexto, o presente trabalho tem o objetivo de gerar ranqueamentos de
candidatos a vagas, a fim de tornar esse trabalho mais sistemático e automatizado.
Dessa forma, no início do trabalho, houve um foco grande na compreensão de como
isso deveria ser feito, do que já estava implementado e dos recursos disponíveis.
Nas discussões com a AGITEC, a exposição da ausência de dados anteriores levou
ao descarte de modelos de aprendizado em favor de uma metodologia voltada à extração
e ao tratamento das fontes de dados via linguagem natural para o reconhecimento de
palavras-chave desejadas e suas posteriores pontuações.
Os objetivos gerais do trabalho são interpretar as NCEs para restringir os candidatos;
encontrar informações sobre eles; interpretá-los com base no que foi extraído da NCE e
ranqueá-los. Para essa etapa, eram esperados avanços nos dois primeiros pontos.
Quanto ao primeiro objetivo, o script para extrair informações a respeito do universo
de candidatos delimitados diretamente pelas NCEs já estava desenvolvido, e encontra-se
funcionando. O outro script, para retirar os termos-chave dos conhecimentos, já funciona,
porém, ainda há espaço para aperfeiçoamentos mais finos no sentido de retirar termos-chave
mais precisos. De maneira geral, o primeiro objetivo já se encontra bem encaminhado.
Quanto aos trabalhos nas informações sobre os candidatos, vale mencionar o tempo
erroneamente investido ao desenvolver interpretadores de currículos do LinkedIn, fonte
de dados decidida como auxiliar em uma reunião sem a presença da AGITEC, mas
numa posterior reunião com ela algumas semanas depois, essa ideia foi descontinuada em
decorrência da impossibilidade de os candidatos terem ação ativa quanto a inscrição. Os
Boletins do Exército poderiam ser outra fonte de dados, mas a dificuldade de obtê-los
irrestritamente sem estar na Intranet de outras Organizações Militares ou um cadastro no
Portal DGP foi fator decisivo para não serem usados nesse trabalho.Inicialmente acreditou-
se ser possível extrair os Boletins de (24), mas isso não foi possível. Em decorrência de
tais fatos, está sendo usado no momento exclusivamente os currículos Lattes e o Portal
da Transparência. O fluxo de uso deles já se encontra bem desenvolvido, de maneira a
satisfazer o segundo objetivo geral.
Capítulo 7. Conclusão 37

Além disso, o período de ausência de respostas da central de antedimento do


CNPq a respeito dos problemas de acesso a currículos durante o uso da API também é
algo que atrapalhou o andamento dos trabalhos. A contramedida para o problema da
API foi realizar a captura de vários currículos e implementar um mecanismo que, ao
ocorrer um erro de busca de currículos em função da API não funcionar, verifica se o
currículo já foi capturado, utilizando a versão já obtida, caso exista. Isso fez parte de uma
contramedida para viabilizar os próximos objetivos quando o fluxo do segundo objetivo
geral não funcionar da maneira ideal.
Certamente, o passo imediato é a finalização da resolução da extração das palavras-
chave das NCEs e seu reconhecimento nos dados filtrados que serão armazenados no
banco de dados orientado a documentos, para a posterior pontuação por meio de médias
ponderadas, de maneira a possibilitar o último objetivo.
Agora, sobre as contribuições feitas até então, elas foram detalhadas precisamente
no Capítulo 5. Tais contribuições ocorreram principalmente no desenvolvimento da API
própria, voltada para fornecer o atendimento de pedidos para AGITEC e manter o sistema
no IME, a instituição cadastrada no Extrator Lattes. Essa API fornecerá chamadas a
outras APIs externas; scripts melhorados em relação aos trabalhos anteriores, como o do
filtro do Portal da Transparência, os de Extração das NCEs, dos scrapers; e dos códigos
inteiramente novos, como os dos métodos de persistência e recuperação dos currículos.
A respeito das melhorias para trabalhos futuros, um ponto foi não haver uma
lista com os candidatos, sendo necessário um módulo auxiliar para obter informações de
todos de certa patente. Esse módulo poderia ser feito com uma integração com o Portal
DGP, porém, a carga de trabalho já gerado pela dependência de um serviço externo, o do
Extrator Lattes, tornou perceptível não ser o apropriado tentar adicionar mais um serviço
externo nesse momento do projeto. Em decorrência disso, está sendo usado webscraper
a fim de viabilizar a prova de conceito. A integração com o Portal DGP pode ser uma
oportunidade para melhoramentos futuros.
Além disso, cabe ainda procurar reaver a comunicação com o CNPq para corrigir o
problema de acesso do Extrator a currículos de membros do Exército e para adicionar o
endereço Internet Protocol (IP) da máquina virtual no IME.
38

REFERÊNCIAS

1 AWAD, E. M. et al. Knowledge management. [S.l.]: Pearson Education India, 2007.

2 O’LEARY, D. Enterprise knowledge management. Computer, v. 31, n. 3, p. 54–61,


1998.

3 PATACSIL, F. F.; TABLATIN, C. L. S. Exploring the importance of soft and hard


skills as perceived by it internship students and industry: A gap analysis. Journal of
Technology and Science education, OmniaScience, v. 7, n. 3, p. 347–368, 2017.

4 BRUNIALTI, L.; PERES, S.; FREIRE, V.; LIMA, C. Aprendizado de máquina em


sistemas de recomendação baseados em conteúdo textual: Uma revisão sistemática. In:
Anais do XI Simpósio Brasileiro de Sistemas de Informação. Porto Alegre, RS, Brasil:
SBC, 2015. p. 203–210. ISSN 0000-0000. Disponível em: <https://sol.sbc.org.br/index.
php/sbsi/article/view/5818>.

5 CHIAVENATO, I. Administración de recursos humanos. El capital humano de las


organizaciones. [S.l.]: Mc Graw Hill, 2011.

6 CADORIN, E.; KLOFSTEN, M.; ALBAHARI, A.; ETZKOWITZ, H. Science parks


and the attraction of talents: Activities and challenges. Triple Helix, Brill, Leiden, The
Netherlands, v. 6, n. 1, p. 36 – 68, 2020. Disponível em: <https://brill.com/view/journals/
thj/6/1/article-p36_36.xml>.

7 RAMLALL, S. A review of employee motivation theories and their implications for


employee retention within organizations. Journal of American academy of business, Cam-
bridge, v. 5, n. 1/2, p. 52–63, 2004.

8 HENDRIKS, M.; VOETEN, B.; KROEP, L. Human resource allocation in a multi-


project r&d environment: Resource capacity allocation and project portfolio planning
in practice. International Journal of Project Management, v. 17, n. 3, p. 181–188, 1999.
ISSN 0263-7863. Disponível em: <https://www.sciencedirect.com/science/article/pii/
S026378639800026X>.

9 PEREIRA, E. d. N.; HOTÊNCIO, G. d. O.; NASCIMENTO, K. P. D. d.; SILVA, E.


F. d. Inteligência competitiva: o tratamento dos dados, informação e conhecimento às
unidades de informação. Múltiplos Olhares em Ciência da Informação-ISSN 2237-6658; v.
3, n. 2 (2013), v. 24, n. 2, 2014.

10 FERNANDES, A. C. L. N.; HENRIQUES, G. L. S.; FILARDI, M. M. G. Sistema de


Recomendação para Gestão do Conhecimento de Pessoal. 82 p. Monografia (Graduação
em Engeharia de Computação) — Instituto Militar de Engenharia, Rio de Janeiro, 2022.

11 CMTEX. Portaria nº 1.218 aprova o regulamento da agência de gestão e inovação


tecnológica. EB10-R-07.015, 08 2019.

12 HUMANTECH, C. R. S. V. Humantech - Gestão do conhecimento. 2023.


26 apr. de 2023. Disponível em: <https://humantech.ws/humantech/ebooks/
ebook-Gestao-do-Conhecimento.pdf>.
Referências 39

13 BATISTA, F. F. O que são práticas de Gestão do Conheci-


mento (GC)? 2016. 26 abr. de 2023. Disponível em: <https://www.
ipea.gov.br/observatorio/produtos-servicos-oculto-blog/52-entenda-gc/
40-o-que-sao-praticas-de-gestao-do-conhecimento-gc>.

14 SARDAGNA, J. C. Gestão do conhecimento: o que é e como apli-


car. 2023. 26 abr. de 2023. Disponível em: <https://blog.contaazul.com/
gestao-do-conhecimento-o-que-e-como-aplicar/>.

15 RESNICK, P.; VARIAN. Recommender systems. In: Communications of the ACM 40.
New York: Association for Computing Machinery, 1997.

16 SARWAR, B.; KARYPIS, G.; KONSTAN, J.; RIEDL, J. Item-based collaborative


filtering recommendation algorithms. In: . New YorkNYUnited States: Association for
Computing Machinery, 2001. (WWW10 Conference), p. 285–295.

17 FORA, U. F. de Juiz de. Data Scraping: Introdução à técnica de extração de dados


web. 2018. 18 jul. de 2023. Disponível em: <https://www.ufjf.br/getcomp/2018/02/20/
data-scraping-introducao-a-tecnica-de-extracao-de-dados-web/>.

18 POSSA, A. Migalhas - Os desafios jurídicos do web scraping. 2023. 18 jul.


de 2023. Disponível em: <https://www.migalhas.com.br/coluna/dados-publicos/
378258/os-desafios-juridicos-do-web-scraping,https://www.migalhas.com.br/autor/
alisson-possa>.

19 CNPQ. Sobre a plataforma Lattes. 2023. 26 abr. de 2023. Disponível em: <https:
//lattes.cnpq.br/>.

20 SOARES, R. M. de B. Sistema para mineração de dados de Gestão do Conhecimento


nos boletins do Exército. 74 p. Monografia (Graduação em Engeharia de Computação) —
Instituto Militar de Engenharia, Rio de Janeiro, 2021.

21 FEDERAL, G. Portal Transparëncia Servidores. 2023. 27 jul. de 2023. Disponível em:


<https://portaldatransparencia.gov.br/download-de-dados/servidores>.

22 DGP, S. SisCoGep Login. 2023. 26 jul. de 2023. Disponível em: <https://sistema-dgp.


eb.mil.br/SisCoGeP_Core/Login>.

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>.

24 SGEX. Boletim. 2023. 26 abr. de 2023. Disponível em: <http://www.sgex.eb.mil.br/


index.php/boletim>.

Você também pode gostar