Repositori ini berisi skrip dan permintaan untuk makalah kami "TopicGpt: Topic Modeling dengan mendorong model bahasa besar" (NAACL'24). Paket topicgpt_python kami terdiri dari lima fungsi utama:
generate_topic_lvl1 menghasilkan topik tingkat tinggi dan dapat digeneralisasikan.generate_topic_lvl2 menghasilkan topik tingkat rendah dan spesifik untuk setiap topik tingkat tinggi.refine_topics Memperbaiki topik yang dihasilkan dengan menggabungkan topik yang sama dan menghilangkan topik yang tidak relevan.assign_topics menetapkan topik yang dihasilkan ke teks input, bersama dengan kutipan yang mendukung penugasan.correct_topics mengoreksi topik yang dihasilkan dengan mencantumkan model sehingga penugasan topik terakhir didasarkan pada daftar topik. 
topicgpt_python dirilis! Anda dapat menginstalnya melalui pip install topicgpt_python . Kami mendukung API Openai, Vertexai, Azure API, Gemini API, dan VLLM (membutuhkan GPU untuk inferensi). Lihat 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 Anda dalam format berikut: {
" id " : " IDs (optional) " ,
" text " : " Documents " ,
" label " : " Ground-truth labels (optional) "
}data/input . Ada juga sampel data file data/input/sample.jsonl untuk men -debug kode. Lihat demo.ipynb untuk pipa lengkap dan instruksi yang lebih rinci. Kami menyarankan Anda untuk mencoba menjalankan subset dengan model yang lebih murah (atau open-source) terlebih dahulu sebelum meningkatkan ke seluruh dataset.
(Opsional) Tentukan jalur I/O di config.yml dan muat menggunakan:
import yaml
with open ( "config.yml" , "r" ) as f :
config = yaml . safe_load ( f )Muat paket:
from topicgpt_python import *Menghasilkan topik tingkat tinggi:
generate_topic_lvl1 ( api , model , data , prompt_file , seed_file , out_file , topic_file , verbose )Menghasilkan topik tingkat rendah (opsional)
generate_topic_lvl2 ( api , model , seed_file , data , prompt_file , out_file , topic_file , verbose )Perbaiki topik yang dihasilkan dengan menggabungkan dekat duplikat dan menghilangkan topik dengan frekuensi rendah (opsional):
refine_topics ( api , model , prompt_file , generation_file , topic_file , out_file , updated_file , verbose , remove , mapping_file )Tetapkan dan perbaiki topik, biasanya dengan model yang lebih lemah jika menggunakan API berbayar untuk menghemat biaya:
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
)
Lihat folder data/output untuk output sampel.
Kami juga menawarkan fungsi perhitungan metrik di topicgpt_python.metrics untuk mengevaluasi penyelarasan antara topik yang dihasilkan dan label-kebenaran (indeks rand yang disesuaikan, kemurnian harmonik, dan informasi timbal balik yang dinormalisasi).
@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}
}