O CNPq por meio do currículo Lattes agrega dados do registro da vida profissional de estudantes, professores, e pesquisadores do país, e tornando-se padrão nacional no meio científico para consulta sobre a produção científica dos referidos profissionais.
Contudo, após a criação do captcha para o acesso aos currículos Lattes, extrair dados dos currículos se tornou uma tarefa árdua, pois todas vez que pretende-se acessar um currículo, torna-se necessário passar pelo captcha. Com o intuito de auxiliar na obtenção destes dados, o lucyLattes
foi desenvolvido.
Com o intuito de melhorar a extração dos dados, e reduzir a possibilidade de erros de execução, a versão v1.0.0 foi desenvolvida. As principais mudanças estão na lógica de extração dos dados, organização dos arquivos e novos relatórios.
Extração, compilação, e organização dos dados dos currículos da plataforma Lattes em arquivos de texto, e geração de um relátório simplificado, que proporcionam agilidade para a geração de informação.
Veja algumas informações geradas:
O lucyLattes não tem vínculo com o CNPq. Este programa computacional é fruto de um esforço (independente) realizado com o objetivo de dar suporte às rotinas de análise de dados cadastradas nos Currículos Lattes (publicamente disponíveis).
Este programa é um software livre; você pode redistribui-lo e/ou modificá-lo dentro dos termos da Licença Pública Geral GNU. Verifique o arquivo LICENSE.txt .
Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Verifique o arquivo LICENSE.txt .
Inicialmente recomenda-se a leitura dos próximos tópicos (Instalação e Como executar o programa).
Python
sudo apt-get install python3
sudo apt-get install python3-pip
sudo apt-get install python3-tk
Ambiente virtual python (virtual environments) no Linux
Para saber mais sobre ambiente virtual em Python
, clique aqui https://docs.python.org/3/library/venv.html. Também fiz um post resumido sobre o assunto AQUI.
mkdir teste_venv
python3 -m venv ./teste_venv
rt@rt-av52a:~/.virtualenvs$ source ./teste_venv/bin/activate
(teste_venv) rafatieppo@rt-av52a:~/.virtualenvs$
(teste_venv) rafatieppo@rt-av52a:~/.virtualenvs$ deactivate
rafatieppo@rt-av52a:~/.virtualenvs$
Pacotes Python
Para todos os sistemas operacionais (Linux, MacOS, Windows, Solaris, etc) são necesssários as mesmas bibliotecas. Para instalar as bibliotecas em ambientes Linux acesse o Terminal, ative o seu ambiente Python
e instale os pacotes.
Posteriormente, com o ambiente virtual ATIVADO, instale os pacotes necessários. No arquivo requirements_lucyLattes.txt
está listado os pacotes necessários. Com o pip
é possível executar o comando pip install -r requirements_lucyLattes,txt
, e possivelmente os pacotes serão instalados. Ou ainda, vc pode instalar um pacote por vez.
(teste_venv) rt@rt-av52a:~/.virtualenvs$ pip3 install numpy
Collecting numpy
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/b8/46/40729c784/numpyx86_64.whl (14.1MB)
100% |████████████████████████████████| 14.1MB 128kB/s
Installing collected packages: numpy
Successfully installed numpy-1.21.1
(teste_venv) rafatieppo@rt-av52a:~/.virtualenvs$
Acesse https://python.org.br/instalacao-windows/ e instale a versão do Python 3
(versão 3.8 ou superior), basta seguir as instruções. Não esqueça de instalar o PIP.
Recomenda-se criar um ambiente virtual para instalar os pacotes e executar o lucyLattes
.
Ambiente virtual python (virtual environments) no Windows
No Power Shell digite:
Set-ExecutionPolicy Unrestricted
pressione S
ou Y
.
teste_venv
:C:\Users\Joao\> mkdir teste_venv
C:\Users\Joao\> python3 -m venv ./teste_venv
C:\Users\Joao\> \teste_venv\Scripts\activate
Pronto, agora é só instalar as bibliotecas com o pip
e posteriormente executar o LucyLattes
.
(teste_venv) C:\Users\Joao\> deactivate
C:\Users\Joao\>
Pacotes Python
Para todos os sistemas operacionais (Linux, MacOS, Windows, Solaris, etc) são necesssários as mesmas bibliotecas. Para instalar as bibliotecas em ambientes Linux acesse o Terminal, ative o seu ambiente Python
e instale os pacotes.
Posteriormente, com o ambiente virtual ATIVADO, instale os pacotes necessários. No arquivo requirements_lucyLattes.txt
está listado os pacotes necessários. Com o pip
é possível executar o comando pip install -r requirements_lucyLattes,txt
, e possivelmente os pacotes serão instalados. Ou ainda, vc pode instalar um pacote por vez.
(teste_venv) C:\Users\Joao\> pip install numpy
Collecting numpy
Cache entry deserialization failed, entry ignored
Downloading https://files.pythonhosted.org/packages/b8/46/40729c784/numpyx86_64.whl (14.1MB)
100% |████████████████████████████████| 14.1MB 128kB/s
Installing collected packages: numpy
Successfully installed numpy-1.21.1
(teste_venv) C:\Users\Joao\>
Faça o Download do arquivo .zip
que contém o lucyLattes
.
Download aqui: https://rafatieppo.github.io/lucylattes/. Escolha a opção .zip
ou .tar
para fazer o download dos aquivos.
Descompacte o arquivo .zip
que em um diretório de sua preferência.
Faça o dowload dos curriculos Lattes desejados e copie todos no diretório xml_zip
. Para realizar o download dos currículos Lattes, acesse o currículo Lattes do pesquisador, e no canto superior direito clique sobre um botão XML
, salve o arquivo e NÃO altere o nome e nem o formato, e NÃO DESCOMPACTE OS ARQUIVOS. O nome do arquivo é composto por 16 caracteres e a extensão .zip
, e.g. 3275865819287843.zip
.
Pelo terminal (ou power shell), e com o ambiente virtual ATIVADO, acesse o diretório descompactado, e digite:
Linux
:python3 app_lucyLattes.py
Windows
python.exe app_lucyLattes.py
(ou algo similar)
interface
aparecerá:Agora selecione as opções disponíveis, clique em Gravar configurações
, e execute (Run lucyLattes
). Se tudo ocorreu normalmente, há um relatório disponível na pasta ./relatorio
. Abra o arquivo relatorio_producao.html
com o Firefox ou com o navegador da sua preferência.
Espero que o lucyLattes
seja útil de alguma forma, dentro do possível estarei melhorando o script na sua funcionalidade.
Caso queira, sinta-se livre para me pagar um cafézinho. Tudo que faço aqui é uma maneira de retribuir e compartilhar o conhecimento que adquiri ao longo da minha carreira, mas quem sou eu para negar um café, certo? Sua ajuda vai ser convertida para manter os scripts (pagando o provedor, por exemplo). O excedente, será utilizado para comprar café mesmo.
zip
and return a xml
;.xml
;.xml
encoding and version;csv
file for each researcher;DataFrame
and export in a csv
file for each researcher;DataFrame
and export in a csv
file for each researcher;DataFrame
and export in a csv
file for each researcher;DataFrame
and export in a csv
file for each researcher;DONE assign qualis and jcr for each paper;
getindex_hwebsci()
DONE Analyze H-index from WOS
.html
[93%]
report_setup.py
) to report.py;hindex_websci_papers.csv
hindex_websci_allgroup.csv
etc … it is confuse.support_report.py
file to decrease number of lines and improve the quality, maybe I should work with Classes.csv
files in folder csv_producao
;csv
files in folder csv_report
;config.txt
: minimal configurations to run lucylattes, it is possible to assign period (year), qualis group, etc.lucyLattes.py
: run all;lucyLattes.py
: funciona como o executável;./resources/read_set_config.py
: is a class to assing configurations;./resources/getadv_minidom.py
: write a .csv
with advising data from each .xml
;./resources/getadvrunning_minidom.py
: write a .csv
with running advising data from each .xml
;./resources/getbooks_minidom.py
: write a .csv
with books data from each .xml
;./resources/getchapters_minidom.py
: write a .csv
with chapters data from each .xml
;./resources/getencoding_minidom.py
: return enconding and version from .xml
;./resources/getgeneraldata_minidom.py
: write a .csv
with dados-gerais from each .xml
;./resources/getgeneraldata_grad_minidom.py
: write a .csv
with formacao-academica graduacao from each .xml
;./resources/getgeneraldata_mest_minidom.py
: with formacao-academica mestrado from each .xml
;./resources/getgeneraldata_dout_minidom.py
: with formacao-academica doutorado from each .xml
;./resources/getminidom_xmlfile
.py: return a minidom from each .xml
;./resources/getpapers_minidom.py
: write a .csv
with papers data from each .xml
;./resources/getresearchextproj_minidom
.py: write a .csv
with research and extension projects from each .xml
;./resources/getshortcourses_minidom
.py: write a .csv
with short courses from each .xml
;./resources/getteaching_minidom.py
: write a .csv
with teaching courses from each .xml
;./resources/getworksevents.py
: to get all TRABALHOS-EM-EVENTOS;./resources/grapho.py
: make a plot for interections among researchers;./resources/index_capes.py
: calcula os indicadores CAPES;./resources/paper_jcr.py
: assign jcr score for each paper;./resources/paper_qualispy
: assign qualis score for each paper;./resources/read_list_from_txt.py
: read lines from a txt
files and returns a list
../resources/removefiles_csvproducao.py
: remove csv
files in folders ./csv_producao/
./csv_producao_hindex/
./relatorio/csv_report/
;./resources/report.py
: Write a report with plots and summaries;./resources/report_class_filteryear.py
: a class to improve report_setup function, a filter for productions;./resources/report_setup.py
: Analize procuctions file, create setup file, csv to generat report../resourcer/report_setup_dict
: create a dictionaru to aid in report_setup.py
;./resources/support_report_indexh.py
: functions to aid in index-h calculation;./resources/support_report.py
: functions to aid in report.py
./resources/tidydata_csv.py
:
csv_producao
;xxxxxx_all.csv
with the same kind of data for all researchers (e.g. fullname_all.csv, papers_all.csv);See ./resources/tidydata_uniq_titles.py:
verify.py
was emboided into tidydata_csv.py
, it drops rows with NaN values on field YEAR
./resources/tidydata_uniq_titles.py:
tidydata_csv.py
, it creates a file xxxxxx_uniq.csv
with NO TITLES
duplicates. Thus a specific paper or project, etc, belongs for am unique reseacher. To assign the owner of the paper or project, etc, the authorship order is used. The duplicates TITLES
are dropped by mean cosine similarity../resources/unzip_xml.py
: - unzip idlattes.zip
and return a .xml
;csv_producao
.
relatorio_producao.html
the initial and final period to evaluate the data (projects, papers, …) was not working. It was because a date fitering function had not been implemented. It was solved and the report period is the same of year (initial / end) input.report.py
had an error to filter projetcts, paper, etc. It was because the report.py
was reading config.txt
instead config_tk.txt.
The issues has been solved with a new functions in support_functions.py
: yearlimit_forfilter_tk()
, and some changes in read_set_config.py
class: configSetup
. The next step is to fix filter in report.py
.report_resch_advi_runn_each
function and others functions that generates tables from advising data. The error was in np.select
. For some reason, np.select
could not find a math between cond
and choice
lists in those functions. I guess the error was a character error, because cond
list has character like: ç ã í
. To solve it, in np.select
the default exit was replaced by -99
DADOS-GERAIS
$->$ FORMACAO-ACADEMICA-TITULACAO
data from DOUTORADO
was add in xxx_fullname.csv
GUI
was implemented in the file app_lucyLattes.py
. This GUI
generates the file ./config_tk.txt
with the settings to run lucyLattes.py
; Some changes were implemented in the
class configSetup
(read_set_config.py
); It was necessary to read the settings in ./config_tk.txt
. The file config.txt
remains, but it is useless for now; The function pg_name()
was changed as well, for now it gets PG’s name from ./config_tk.txt
;TITLES
has been implemented. This method is based on cosine similarity and this algorithm is in the file ./resources/tidydata_uniq_titles.py:
report_setup_dict.py
, in grapho_papernoint production, the function was change for columngrapho_noint. In tidydata_csv.py
was created a new function to tidy worksevents. It was created a new file getworksevents.py
to get all TRABALHOS-EM-EVENTOS.config.txt
is being read in lucylattes.py
, and variables are assigned from the class configSetup()
. It is done for run indice capes, qualis file, wos, removefiles. The frame.append method is deprecated and was replaced by pandas.concat.support_functions_indexh.py
, it makes a report of paper’s citations for a specific year. Notice that this papers was published in this same year.repot_setup_dict.py
) to create a dictionary with basic information to report_setup.py
.report_class_filteryear.py
has been implemented. For a specific production, it finds a function to filter by years and generate a csv
report file. This class is used into report_setup.py
, which is cleaner than before.report_setup.py
replace if
by case
, it is a better approach, for now its running. in repor_setup.py
for running advising was implemented a fast lazy solution to solve the issue. It was because in running advising is not necessary to filter by year. The next steps are: to improve report layout, advisor and student interaction in papers.report.py
has been started. a improvement was implemented to filter the projetcts. it is because may belong partially for a period.relatorio
to store csv files used in report.py
.tidydata_csv.py
; the main feature is to drop rows with empty values in YEAR field.tidydata_csv
) for tidy and join all data in only one csv
for each production is done. There are two kinds of joinned csv
, xxxxx_all.csv
and xxxxx_uniq.csv
.csv
is created. For all csv
files a column with ID (id lattes) was add. It makes easir to manipulate data in the future. Otherwise, the csv
file will be a little bit greater.csv
is created.csv
is created. It is necessary add QUALIS and JCRcsv
is created. It is necessary to review a some extension projetcs wich start in the same year.csv
is created; A git repo has been created.J. P. Mena-Chalco e R. M. Cesar-Jr. scriptLattes: An open-source knowledge extraction system from the Lattes platform. Journal of the Brazilian Computer Society, vol. 15, n. 4, páginas 31–39, 2009.
Rossum, G. van ( C. voor W. en I. (CWI)). (1995). Python tutorial. Python (Vol. 206). Amsterdam.
https://docs.python.org/pt-br/3/library/venv.html
https://docs.python.org/pt-br/3/tutorial/venv.html
<CURRICULO-VITAE
<DADOS-GERAIS
<RESUMO-CV
<ENDERECO
<ENDERECO-PROFISSIONAL
</ENDERECO>
</DADOS-GERAIS>
<CURRICULO-VITAE
- books
<CURRICULO-VITAE
- chapters
<CURRICULO-VITAE
- advising finished
<CURRICULO-VITAE
- advising running
<CURRICULO-VITAE
- teaching
<CURRICULO-VITAE
- courses
<CURRICULO-VITAE
- papers
<CURRICULO-VITAE
- worksevents
<CURRICULO-VITAE