Este repositorio contiene scripts y indicaciones para nuestro documento "TopicSppt: modelado de temas mediante la provisión de modelos de idiomas grandes" (NAACL'24). Nuestro paquete topicgpt_python consta de cinco funciones principales:
generate_topic_lvl1 genera temas de alto nivel y generalizables.generate_topic_lvl2 genera temas de bajo nivel y específicos para cada tema de alto nivel.refine_topics refina los temas generados fusionando temas similares y eliminando temas irrelevantes.assign_topics asigna los temas generados al texto de entrada, junto con una cita que admite la tarea.correct_topics corrige los temas generados reprompando el modelo para que la asignación final del tema se basa en la lista de temas. 
topicgpt_python ! Puede instalarlo a través de pip install topicgpt_python . Apoyamos la API de OpenAI, Vertexai, Azure API, Gemini API y VLLM (requiere GPU para inferencia). Ver 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 en el siguiente formato: {
" id " : " IDs (optional) " ,
" text " : " Documents " ,
" label " : " Ground-truth labels (optional) "
}data/input . También hay una muestra de datos de datos de data/input/sample.jsonl para depurar el código. Consulte demo.ipynb para obtener una tubería completa e instrucciones más detalladas. Le recomendamos que intente ejecutar en un subconjunto con modelos más baratos (o de código abierto) primero antes de ampliar todo el conjunto de datos.
(Opcional) Definir rutas de E/S en config.yml y cargar usando:
import yaml
with open ( "config.yml" , "r" ) as f :
config = yaml . safe_load ( f )Cargue el paquete:
from topicgpt_python import *Generar temas de alto nivel:
generate_topic_lvl1 ( api , model , data , prompt_file , seed_file , out_file , topic_file , verbose )Generar temas de bajo nivel (opcional)
generate_topic_lvl2 ( api , model , seed_file , data , prompt_file , out_file , topic_file , verbose )Refina los temas generados fusionando casi duplicados y eliminando temas con baja frecuencia (opcional):
refine_topics ( api , model , prompt_file , generation_file , topic_file , out_file , updated_file , verbose , remove , mapping_file )Asigne y corrija los temas, generalmente con un modelo más débil si usa API pagas para ahorrar costos:
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
)
Consulte la carpeta data/output para obtener salidas de muestra.
También ofrecemos funciones de cálculo métrico en topicgpt_python.metrics para evaluar la alineación entre los temas generados y las etiquetas de verdad en tierra (índice RAND ajustado, pureza armónica e información mutua normalizada).
@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}
}