拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Small-Text数据集完全指南:单标签与多标签分类数据的3种构建方式

Small-Text数据集完全指南单标签与多标签分类数据的3种构建方式【免费下载链接】small-textActive Learning for Text Classification in Python项目地址: https://gitcode.com/gh_mirrors/smal/small-textSmall-Text 是 Python 中用于文本分类主动学习Active Learning的开源库而构建数据集是其中的第一步。本文带你快速掌握 Small-Text 数据集的 3 种构建方式单标签分类、多标签分类以及原始文本数据帮助你用少量标注数据训练高性能的文本分类模型。图主动学习中随着标注数据逐步增加模型性能呈上升的学习曲线为什么 Small-Text 数据集如此重要 在主动学习场景中你的数据往往只有一小部分被标注。Small-Text 的数据集对象Dataset统一封装了三要素特征x文本的表示稀疏矩阵、稠密向量或原始文本标签y单标签用 numpy 数组多标签用稀疏矩阵元信息目标类别target_labels、是否为多标签is_multi_label数据集中的target_labels表示所有可能的类别而不是已出现过的类别——这是主动学习能识别新标注类别的关键设计。 核心实现位于 small_text/data/datasets.py官方说明见 docs/datasets.rst方式一单标签分类数据SklearnDataset单标签Single-Label指每个样本恰好属于一个类别例如体育/科技/财经三选一。特征矩阵x可以是稠密的 numpy 数组或稀疏的 scipy 矩阵词袋表示常用稀疏矩阵标签y是一个一维整数数组import numpy as np from small_text.data import SklearnDataset # 100 个样本30 维特征 x np.random.rand(100, 30) y np.random.randint(0, 2, size100) # 二分类标签 dataset SklearnDataset(x, y, target_labelsnp.arange(2))如果你手头是原始文本可以用from_arrays配合向量化器一步构建先对训练集fit再对测试集transformfrom sklearn.feature_extraction.text import TfidfVectorizer from small_text import SklearnDataset vectorizer TfidfVectorizer(stop_wordsenglish) ds_train SklearnDataset.from_arrays(train.data, train.target, vectorizer, trainTrue) ds_test SklearnDataset.from_arrays(test.data, test.target, vectorizer, trainFalse)完整示例可参考 examples/examplecode/data/example_data_binary.py。方式二多标签分类数据稀疏指示矩阵多标签Multi-Label指每个样本可以同时拥有多个类别例如一条新闻同时属于科技和财经。此时标签y不再是数组而是一个(样本数 × 类别数) 的稀疏指示矩阵indicator matrix非零位置表示拥有该标签。Small-Text 提供了便捷函数list_to_csr可以把每行一个标签列表的结构转成稀疏矩阵from small_text import SklearnDataset, list_to_csr NUM_LABELS 28 # train[labels] 形如: [[0, 5], [3], [1, 2, 7], ...] y_train list_to_csr(train[labels], shape(len(train), NUM_LABELS)) ds_train SklearnDataset.from_arrays(train[text], y_train, vectorizer, trainTrue)list_to_csr的实现在 small_text/utils/labels.py 中实际用法可看 examples/examplecode/data/example_data_multilabel.py基于 GoEmotions 情感数据集27 个标签。判断技巧Small-Text 通过y的类型自动判断是否为多标签——csr_matrix即多标签ndarray即单标签见is_multi_label函数。方式三原始文本数据TextDataset / Transformers 集成如果你的模型直接消费原始文本如 BERT、SetFit 等 Transformers 模型则无需自己向量化。Small-Text 提供对应的数据容器数据集实现配套分类器特点SklearnDatasetScikit-learn 分类器稠密/稀疏特征核心数据结构PytorchTextClassificationDatasetKimCNN 等 PyTorch 分类器词向量 分词TextDatasetSetFit原始文本列表TransformersDatasetTransformer 分类器原始文本列表构建原始文本数据集同样支持单标签和多标签from small_text.data import TextDataset texts [你好世界, 今天天气不错, ...] y np.array([0, 1, 0, ...]) # 单标签 ds TextDataset(texts, y, target_labelsnp.arange(2))PyTorch 集成示例基于 20 Newsgroups 语料库见 examples/examplecode/data/example_data_multiclass.py。关键细节未标注数据如何表示 ️主动学习离不开未标注样本两种表示方式有讲究单标签用特殊常量LABEL_UNLABELED填充标签数组from small_text.base import LABEL_UNLABELED y np.array([LABEL_UNLABELED] * 100)多标签更简单——指示矩阵中空行就是未标注样本无需特殊值这种统一约定让查询策略Query Strategy可以无缝地在已标注/未标注池之间选取样本。索引、视图与复制 数据集支持 numpy 风格的索引dataset[10] # 单个样本 dataset[2:10] # 切片 dataset[[1, 5, 10]] # 索引列表索引返回的是只读**视图DatasetView**而非副本开销极低需要独立副本时调用dataset.clone()即可——它会自动解除视图返回完整的数据集对象。小结3 种方式怎么选✅用 Scikit-learn / 词袋特征→SklearnDataset单标签传整数数组多标签传csr_matrix用 PyTorch 深度模型→PytorchTextClassificationDataset传文本 分词器用 Transformers / SetFit→TextDataset或TransformersDataset直接传原始文本列表无论哪种方式Small-Text 都用统一的 Dataset 接口管理特征、标签与target_labels为你的主动学习流程打下坚实基础。下一步可以搭配查询策略如不确定性采样、Balancing、Coresets 等位于 small_text/query_strategies/开始迭代式标注用最少的人工成本获得最好的文本分类效果。【免费下载链接】small-textActive Learning for Text Classification in Python项目地址: https://gitcode.com/gh_mirrors/smal/small-text创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门