Este repositório contém scripts e solicitações para o nosso artigo "TopicGPT: Modelagem de tópicos solicitando grandes modelos de idiomas" (NAACL'24). Nosso pacote topicgpt_python consiste em cinco funções principais:
generate_topic_lvl1 gera tópicos de alto nível e generalizável.generate_topic_lvl2 gera tópicos de baixo nível e específicos para cada tópico de alto nível.refine_topics refina os tópicos gerados, mesclando tópicos semelhantes e removendo tópicos irrelevantes.assign_topics atribui os tópicos gerados ao texto de entrada, juntamente com uma cotação que suporta a atribuição.correct_topics corrige os tópicos gerados, reprojetando o modelo para que a atribuição de tópico final seja fundamentada na lista de tópicos. 
topicgpt_python é lançado! Você pode instalá -lo via pip install topicgpt_python . Apoiamos a API OpenAI, Vertexai, Azure API, Gemini API e VLLM (requer GPUs para inferência). Veja Pypi. pip install topicgpt_python
# Run in shell
# Needed only for the OpenAI API deployment
export OPENAI_API_KEY={your_openai_api_key}
# Needed only for the Vertex AI deployment
export VERTEX_PROJECT={your_vertex_project} # e.g. my-project
export VERTEX_LOCATION={your_vertex_location} # e.g. us-central1
# Needed only for Gemini deployment
export GEMINI_API_KEY={your_gemini_api_key}
# Needed only for the Azure API deployment
export AZURE_OPENAI_API_KEY={your_azure_api_key}
export AZURE_OPENAI_ENDPOINT={your_azure_endpoint}
.jsonl no seguinte formato: {
" id " : " IDs (optional) " ,
" text " : " Documents " ,
" label " : " Ground-truth labels (optional) "
}data/input . Há também um exemplo de dados de arquivo de data/input/sample.jsonl para depurar o código. Confira demo.ipynb para obter um pipeline completo e instruções mais detalhadas. Aconselhamos que você tente executar em um subconjunto com modelos mais baratos (ou de código aberto) antes de dimensionar para todo o conjunto de dados.
(Opcional) Defina os caminhos de E/S em config.yml e carregar usando:
import yaml
with open ( "config.yml" , "r" ) as f :
config = yaml . safe_load ( f )Carregue o pacote:
from topicgpt_python import *Gerar tópicos de alto nível:
generate_topic_lvl1 ( api , model , data , prompt_file , seed_file , out_file , topic_file , verbose )Gerar tópicos de baixo nível (opcional)
generate_topic_lvl2 ( api , model , seed_file , data , prompt_file , out_file , topic_file , verbose )Refine os tópicos gerados, fundindo -se perto de duplicatas e removendo tópicos com baixa frequência (opcional):
refine_topics ( api , model , prompt_file , generation_file , topic_file , out_file , updated_file , verbose , remove , mapping_file )Atribua e corrija os tópicos, geralmente com um modelo mais fraco se estiver usando APIs pagas para economizar custos:
assign_topics (
api , model , data , prompt_file , out_file , topic_file , verbose
) correct_topics(
api, model, data_path, prompt_path, topic_path, output_path, verbose
)
Confira a pasta data/output para obter saídas de amostra.
Também oferecemos funções de cálculo métrico em topicgpt_python.metrics para avaliar o alinhamento entre os tópicos gerados e os rótulos da verdadeira-verdade (Índice RAND ajustado, pureza harmônica e informações mútuas normalizadas).
@misc{pham2023topicgpt,
title={TopicGPT: A Prompt-based Topic Modeling Framework},
author={Chau Minh Pham and Alexander Hoyle and Simeng Sun and Mohit Iyyer},
year={2023},
eprint={2311.01449},
archivePrefix={arXiv},
primaryClass={cs.CL}
}