topicGPT
v0.2.2 Removed redundant parameters
このリポジトリにはスクリプトが含まれており、「大規模な言語モデルを促したトピックモデリング」(NAACL'24)のペーパー「トピックモデリング」のプロンプトが含まれています。 topicgpt_pythonパッケージは、5つの主要な機能で構成されています。
generate_topic_lvl1 、高レベルで一般化可能なトピックを生成します。generate_topic_lvl2 、各高レベルのトピックに対して低レベルで特定のトピックを生成します。refine_topics 、同様のトピックを統合し、無関係なトピックを削除することにより、生成されたトピックを改良します。assign_topics 、生成されたトピックを入力テキストに割り当て、割り当てをサポートする引用を割り当てます。correct_topics 、最終的なトピックの割り当てがトピックリストに基づいているように、モデルを再形成することにより、生成されたトピックを修正します。 
topicgpt_pythonがリリースされました! pip install topicgpt_pythonを介してインストールできます。 Openai API、Vertexai、Azure API、Gemini API、およびVLLMをサポートします(推論にはGPUが必要です)。 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のI/Oパスを定義し、使用して負荷をかけます。
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}
}