Этот репозиторий содержит сценарии и подсказки для нашей статьи «Темагпт: моделирование темы, побуждая большие языковые модели» (NAACL'24). Наш пакет topicgpt_python состоит из пяти основных функций:
generate_topic_lvl1 генерирует высокоуровневые и обобщаемые темы.generate_topic_lvl2 генерирует низкоуровневые и конкретные темы для каждой темы высокого уровня.refine_topics уточняет сгенерированные темы, объединяя аналогичные темы и удаляя не относящиеся к делу тем.assign_topics назначает сгенерированные темы вводу текста вместе с цитатой, которая поддерживает задание.correct_topics исправляет сгенерированные темы, воспроизводя модель так, чтобы окончательное назначение темы зарегистрировано в списке тем. 
topicgpt_python выпускается! Вы можете установить его с помощью pip install topicgpt_python . Мы поддерживаем API OpenAI, Vertexai, Azure API, API Gemini и VLLM (требуют графических процессоров для вывода). Смотрите 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 в следующем формате: {
" id " : " IDs (optional) " ,
" text " : " Documents " ,
" label " : " Ground-truth labels (optional) "
}data/input . Существует также пример данных файла data/input/sample.jsonl для отладки кода. Проверьте demo.ipynb для полного трубопровода и более подробных инструкций. Мы советуем вам попробовать запустить подмножество с более дешевыми (или с открытым исходным кодом) сначала, прежде чем масштабировать весь набор данных.
(Необязательно) Определить пути ввода/вывода в config.yml и загрузку с использованием:
import yaml
with open ( "config.yml" , "r" ) as f :
config = yaml . safe_load ( f )Загрузите пакет:
from topicgpt_python import *Генерировать темы высокого уровня:
generate_topic_lvl1 ( api , model , data , prompt_file , seed_file , out_file , topic_file , verbose )Генерировать темы низкого уровня (необязательно)
generate_topic_lvl2 ( api , model , seed_file , data , prompt_file , out_file , topic_file , verbose )Уточнить сгенерированные темы, объединяясь вблизи дубликатов и удаляя темы с низкой частотой (необязательно):
refine_topics ( api , model , prompt_file , generation_file , topic_file , out_file , updated_file , verbose , remove , mapping_file )Назначьте и исправляйте темы, обычно с более слабой моделью при использовании платных API для экономии стоимости:
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
)
Ознакомьтесь с папкой data/output для выводов выводов.
Мы также предлагаем функции показателя расчета метрики в topicgpt_python.metrics , чтобы оценить выравнивание между генерируемыми темами и метками с землей (скорректированный индекс RAND, гармоническая чистота и нормализованная взаимная информация).
@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}
}