webis-de/small-text

Active Learning for Text Classification in Python

small-text – 文本分类的主动学习

是什么

  • 一个实现文本分类 主动学习 工作流的 Python 库。它允许你从极少的标注样本开始,训练分类器,查询最具信息量的未标注文档,人工标注它们,然后重复此过程,直到满足停止条件。

核心功能

功能 详情
查询策略 内置 19 种方法(如不确定性、多样性、边界、熵、基于 SetFit 的策略),决定应让人工标注者标注哪些未标注文本。
初始化方法 多种方式启动初始标注集,包括随机、基于聚类、零样本 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 工具结合,构建完整标注界面,或嵌入自定义流水线中。

快速上手

  • 仓库包含二分类、PyTorch 多分类和基于 Transformer 的多分类示例脚本。
  • GitHub 上提供 5 个 Jupyter Notebook(可在 Google Colab 中启动),逐步演示端到端主动学习会话、停止条件使用、SetFit 集成、零样本冷启动和与 Argilla 的 UI 演示。

文档与社区

何时使用

  • 拥有大量文本数据,但仅有少量标注样本。
  • 希望无需编写样板代码即可尝试不同主动学习策略。
  • 需要一个同时支持经典机器学习模型和现代 Transformer 模型的库。

small-text 是一个真正、持续维护的软件项目,专注于文本数据的核心机器学习技术(主动学习),在 AI/ML 生态系统中定位清晰。

相关

  • 项目
  • 项目
  • 项目
  • 项目