Recomendações de artigos científicos da OpenAlex com ChatGPT
Como potencializar a descoberta de informações com o ChatGPT?
Talvez você esteja sentindo que tudo está passando bem rápido e ao mesmo tempo muita coisa está acontecendo.
Já parou para pensar na quantidade de informações que recebemos, processamos e expressamos, pelo nosso cérebro, comparado há cinco anos atrás? Parece que mudou muito, não é mesmo?
“Vivemos uma verdadeira entropia da informação.”
Nossa sociedade está passando por uma transição devido aos impactos dos avanços da tecnologia, e a velocidade na produção de informação é uma consequência.
Essa situação afeta todas as áreas, incluindo o meio científico, que demanda informações mais seletivas e em um ritmo mais acelerado.
Então, como podemos aprimorar a qualidade e a precisão das recomendações de artigos científicos de maneira mais ágil?
Fonte de informação + Inteligência Artificial Generativa
ou
Biblioteconomia + Tecnologia
Durante esse texto, explicarei um “projeto”, a partir de uma ideia que tive ao realizar um curso sobre o uso da API do ChatGPT. “Rascunhei” um protótipo de sistema que pode auxiliar na descoberta e recomendação da informação.
Ressalva
Este projeto utiliza Inteligência Artificial Generativa para aprimorar a precisão das recomendações de artigos científicos. Embora seja possível implementar o projeto sem IA, a funcionalidade central depende dela. Além disso, o uso de fontes, diferentes da OpenAlex, também é viável (inclusive de Repositórios).
A ideia desse “projeto” não é desenvolver um produto novo e pronto, mas apenas treinar a partir dos meus próprios estudos pessoais e “rascunhar” um protótipo.
Bora lá?!
Sumário
Como é o fluxo do sistema?
Basicamente, o fluxo do sistema está separado em 3 grandes partes:
- Coleta e Armazenamento de Dados
- Entendimento do Usuário
- Recomendações Customizadas
Coleta e Armazenamento de Dados:
Utilizei da API da OpenAlex, para coletar os dados de artigos mais recentes (última semana por exemplo).
Para esse projeto em si, armazenei apenas em uma única tabela estruturada formatada no padrão necessário (utilizando Python Pandas simples). Contudo, caso seja de fato implementada, recomendaria a estruturação em um banco de dados relacional.
Entendimento do Usuário:
Entender as necessidades informacionais do usuário é crucial para recomendar informações. Para esse “projeto”, eu fui simples e apenas questionei:
- Área de conhecimento que tem interesse.
- Tipo de acesso do artigo (aberto ou fechado)
- Termos chave de interesse
Utilizei a ferramenta do Streamlit como forma de protótipo do front-end da aplicação.
Recomendações Customizadas
A partir dos artigos coletados e entendimento do usuário, propus um sistema de pontuação, para que se possa rankear os artigos e recomendar os N primeiros.
O sistema leva em conta a regra de priorização:
Score básico: Maior probabilidade da área(s) escolhida(s) pelo usuário
> Termo inserido pelo usuário no título
> Termo inserido pelo usuário no resumo
> Termo expandido pelo usuário no título
> Termo expandido pelo usuário no resumo
A OpenAlex utiliza um sistema de classificação de conceitos (“concepts”) a partir do título e resumo para definir as áreas de cada documento, gerando uma probabilidade daquele conceito estar, de fato, correto ao documento (se quiser saber mais sobre os “concepts”, confira a documentação).
Para esse “projeto”, eu preferi utilizar apenas os de nível 0 (Political science, Philosophy, Economics, Business, Psychology, Mathematics, Medicine, Biology, Computer science, Geology, Chemistry, Art, Sociology, Engineering, Geography, History, Materials science, Physics, Environmental science).
ATENÇÃO: Os “concepts” da OpenAlex não são precisos, especialmente quando se trata de classificações mais detalhadas. Para outros propósitos, realizei algumas consultas na área de Biblioteconomia/Ciência da Informação (“Library science”) e obtive registros sem coerência alguma.
Portanto, tenha cautela ao utilizá-los! ¯\_(ツ)_/¯
Após a criação do sistema de pontuação e a coleta de N registros (neste exemplo específico do “projeto”, optei por usar o número 5), é recomendável a apresentação personalizada de um parágrafo que sintetiza todo o conteúdo dos artigos científicos, de forma semelhante a uma ‘newsletter’.
Como o ChatGPT auxilia?
Utilizo o ChatGPT em duas frentes:
- “Expansor de termos”
- “Resumo personalizado”
“Expansor de termos”:
Se um usuário disser que tem interesse em “Aprendizado de máquina” e houver artigos falando sobre “Machine learning”, “Aprendizado automático”, “Classificação”,”Regression” e não houver “Aprendizado de máquina” ele não iria entrar na regra condicional de atribuição de pontuação e, consequentemente, teria uma pontuação menor e não subiria no ranking para ser recomendado para o usuário.
Nesse caso, utilizo o ChatGPT para “expandir os termos”.
Não utilizei nenhum tesauro específico, nesse “projeto”, para melhorar ainda mais a qualidade, mas poderia implementar nessa fase (de qualquer forma, nem todas as áreas possuem um tesauro com grande abrangência para utilizarmos).
“Resumo personalizado”:
Para tornar a recomendação mais personalizada e atrativa para os usuários, a criação de um “Resumo personalizado” é bem interessante. Nesse processo, faço uso do ChatGPT para elaborar um texto agradável e envolvente.
Estimativas de custos
Confesso que não imaginava o quão barato e caro possa ser o uso da API.
Eu esperava que a utilização frequente dos prompts fosse mais custosa no uso corrente, mas realmente fiquei surpreso com o valor estimado para a criação do “Resumo das recomendações”.
Utilizei o Tokenizer, fornecido pela OpenAI para estimar a quantidade de tokens dos “inputs” e “outputs” passados.
Se não houvesse um orçamento grande, eu particularmente pensaria em outras opções, pois não acredito que seja essencial pelo custo benefício. Porém, consultar seus usuários é a melhor opção.
Considerações finais
Esse foi apenas um “projeto” para aprimorar e testar meus conhecimentos a partir do curso da Alura:
GPT e Python: criando ferramentas com a API
No qual recomendo fortemente você fazer, se tiver interesse em se aprofundar no uso de Inteligência Artificial para desenvolvimento de ferramentas.
Está realmente excepcional!
Eu tenho ciência das “limitações” deste “projeto”, sobretudo da parte técnica e tecnológica, entretanto, é apenas um “rascunho”.
Esse “projeto” é somente uma ideia e muitas outras coisas podem ser feitas, como até mesmo utilizar em Repositórios, como forma de divulgação de seus materiais.
Mas você pode me perguntar como seria definido a área de conhecimento dos documentos se eu não tenho nenhuma classificação?
Inspirado no sistema de probabilidade da OpenAlex, recomendaria utilizar dos termos indexadores para classificá-los em uma respectiva taxonomia de classificação (THE, ASJC, FORD-OECD, QS Quacquarelli Symonds etc. Eu realmente gosto da QS! ) e a partir da frequência da classificação dos termos indexadores, atribuiria uma probabilidade do documento ser de alguma área.
Caso tenham interesse, confiram o repositório no GitHub:
Ou na apresentação resumida do “projeto”:
Mas agora quero saber de você:
Quais outras possibilidades de “novas ferramentas” acopladas com IA generativa você já pensou?
Deixe nos comentários e vamos compartilhar conhecimento.
Além disso, fica a reflexão:
“Informação não é conhecimento. A única fonte do conhecimento é a experiência.”
— Desconhecido
Se você chegou até aqui e curtiu, dê palmas, compartilhe e se inscreva para me acompanhar.
Ainda há muito a se explorar…