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 安装版本。 |
| 可扩展性 | 接口设计为模块化,可自由组合任意查询策略、分类器和停止规则。 |
典型工作流程
- 安装 –
pip install small-text(使用 Transformer 模型时添加[transformers]附加包)。 - 准备数据 – 提供未标注文本池和(可选)少量初始标注集。
- 选择组件 – 选择分类器(如
sklearn.LinearSVC、torch.nn.Module或transformers模型)、查询策略和停止条件。 - 运行循环 – 库自动处理训练、查询和标注集更新。
- 导出结果 – 获取最终训练好的模型或标注数据集,用于下游任务。
为何重要
- 标注效率高 – 显著减少构建高质量文本分类器所需的手动标注量,尤其在标注成本高的领域(生物医学、社会科学、法律文本等)价值巨大。
- 科研就绪 – 已被多个同行评审论文使用,并包含可复现性说明,适合学术实验。
- 易于集成 – 可与 Argilla 等 UI 工具结合,构建完整标注界面,或嵌入自定义流水线中。
快速上手
- 仓库包含二分类、PyTorch 多分类和基于 Transformer 的多分类示例脚本。
- GitHub 上提供 5 个 Jupyter Notebook(可在 Google Colab 中启动),逐步演示端到端主动学习会话、停止条件使用、SetFit 集成、零样本冷启动和与 Argilla 的 UI 演示。
文档与社区
- 完整文档位于 https://small-text.readthedocs.io,涵盖安装、组件参考、可复现性说明及真实世界应用案例展示。
- 项目积极维护(MIT 许可证),拥有 CI 状态徽章、引用用 DOI,并通过 CONTRIBUTING 指南欢迎贡献。
何时使用
- 拥有大量文本数据,但仅有少量标注样本。
- 希望无需编写样板代码即可尝试不同主动学习策略。
- 需要一个同时支持经典机器学习模型和现代 Transformer 模型的库。
small-text 是一个真正、持续维护的软件项目,专注于文本数据的核心机器学习技术(主动学习),在 AI/ML 生态系统中定位清晰。
相关
- 项目
- 项目
- 项目
- 项目