webis-de/small-text

Active Learning for Text Classification in Python

small-text – テキスト分類のためのアクティブラーニング

何であるか

  • テキスト分類のための アクティブラーニング ワークフローを実装するPythonライブラリです。非常に少ないラベル付きサンプルから始め、分類器を訓練し、最も情報量の多い未ラベルドキュメントを人間のアノテーターにラベル付けを依頼し、そのラベルを追加して繰り返すことで、停止条件を満たすまで継続します。

主な機能

機能 詳細
クエリ戦略 不確実性、多様性、マージン、エントロピー、SetFitベースなど19種類の組み込みメソッド。どの未ラベルテキストを人間アノテーターにラベル付けしてもらうかを決定します。
初期化 ランダム、クラスタリングベース、ゼロショットSetFitなど、複数の方法で初期ラベルセットを構築できます。
停止基準 バジェット、性能の飽和、信頼度の閾値など5種類の即時利用可能な基準。アクティブラーニングループを自動的に終了します。
分類器バックエンド scikit-learn推定器、PyTorchモデル、Hugging Face transformersと互換性があります。GPUサポートはオプション。軽量なCPU専用インストールも可能です。
拡張性 インターフェースは意図的にモジュール化されており、任意のクエリ戦略、分類器、停止ルールを組み合わせられます。

一般的なワークフロー

  1. インストール – pip install small-text(Transformerモデルを使う場合は [transformers] オプションを追加)。
  2. データ準備 – 未ラベルテキストのプールと(オプションで)小さな初期ラベルセットを提供します。
  3. コンポーネント選択 – 分類器(例:sklearn.LinearSVC、torch.nn.Module、transformersモデル)、クエリ戦略、停止基準を選択します。
  4. ループ実行 – ライブラリが自動的に訓練、クエリ、ラベルセットの更新を処理します。
  5. エクスポート – 最終的な訓練済みモデルやラベル付きデータセットを取得し、後続処理に利用できます。

なぜ重要か

  • ラベル効率 – 高品質なテキスト分類器を構築するために必要な手動ラベリング量を削減。特にラベリングコストが高い分野(医療、社会科学、法的文書など)で特に価値があります。
  • 研究用に最適 – 複数の査読付き論文で使用されており、再現性のノートも含まれており、学術的な実験に適しています。
  • 統合しやすい – Argilla などのUIツールと組み合わせて完全なアノテーションインターフェースを構築できるほか、カスタムパイプラインに埋め込むことも可能です。

導入方法

  • リポジトリには2値分類、PyTorchマルチクラス、Transformerベースのマルチクラスの例題スクリプトが含まれています。
  • GitHubに掲載されている5つのJupyterノートブック(Google Colabで起動可能)で、エンドツーエンドのアクティブラーニングセッション、停止基準の使用、SetFit統合、ゼロショット初期化、Argillaを使ったUIデモまでを丁寧に解説しています。

ドキュメントとコミュニティ

  • 完全なドキュメントは https://small-text.readthedocs.io で公開。インストール、コンポーネントリファレンス、再現性のノート、実世界応用の紹介をカバーしています。
  • プロジェクトは積極的にメンテナンスされており(MITライセンス)、CIバッジ、DOI(引用用)、CONTRIBUTINGガイドによる貢献を歓迎しています。

使用するべきタイミング

  • 大量のテキストデータはあるが、ラベル付きサンプルはわずかしかない場合。
  • ボイラープレートコードを書かずに、さまざまなアクティブラーニング戦略を試したい場合。
  • 伝統的なMLモデルと最新のTransformerモデルの両方に対応するライブラリが必要な場合。

small-text は、テキストデータ向けの核心的な機械学習技術(アクティブラーニング)に焦点を当てた、本格的で継続的にメンテナンスされているソフトウェアプロジェクトであり、AI/MLエコシステムに明確に位置づけられています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト