Product Classifier MacBERT(27 类)
中文商品标题的细粒度分类模型,基于 hfl/chinese-macbert-base 全参数微调。输入一条商品标题,输出 27 个品类中每一类的概率。版本 20261028-170527-431825_seq32_bs512_lr2e-05_ep60_seed42_samplesall,输入长度 32 token(含特殊 token),超长标题截断。
版本与训练
- 训练时间:2026-10-28T17:05:27+08:00
- 数据:88,448 条训练 / 11,059 条验证,27 类
- 最佳轮次:第 30 轮(计划 60 轮,early stopping patience=8),按验证集 Macro-F1 选择
- 正则:label smoothing 0.05、token 噪声 0.05、BERT dropout 0.2、分类头 dropout 0.2、R-Drop 0.5、梯度裁剪 1.0
- 优化:AdamW(bias/LayerNorm 不做 weight decay)、AMP fp16、warmup 10% + 线性衰减、全参数微调
- 硬件:RTX 4090 24GB,torch 2.13.0+cu130
简要测评
完整验证集 11,059 条:
| 指标 | PT FP32 |
|---|---|
| Accuracy | 95.37% |
| Macro Precision | 93.51% |
| Macro Recall | 91.62% |
| Macro F1 | 92.37% |
| Weighted F1 | 95.36% |
| Loss | 0.2129 |
| ECE(10 bins) | 0.0079 |
验证集参与早停与模型选择,以上为验证成绩,不是独立测试集结论。验证集类别不均衡:最小类 汽车用品 127 条,最大类 家居 14,217 条;尾部类指标偏低(汽车用品 F1 0.710、运动 0.812、礼品 0.819、餐饮 0.829),头部类通常在 0.95 以上。各类别指标见 best_validation.json。
权重 SHA-256:71ea8c570667faae2c64db67e9de865105b39f53c5c5a019596d4d2f9161c433。
下载与使用
hf download bangbangkido/Product-Classifier-MacBERT --local-dir ./product-classifier-macbert
cd product-classifier-macbert
python -m pip install -r requirements.txt
import json
import torch
from transformers import AutoConfig, AutoTokenizer
from modeling import BertTitleClassifier
max_length = 32
labels = json.load(open("labels.json", encoding="utf-8"))["id2label"]
config = AutoConfig.from_pretrained(".")
model = BertTitleClassifier(config, num_classes=len(labels))
model.load_state_dict(torch.load("model.pt", map_location="cpu", weights_only=True))
model.eval()
tokenizer = AutoTokenizer.from_pretrained(".")
batch = tokenizer(
["蓝牙耳机 主动降噪 入耳式"],
padding="max_length",
truncation=True,
max_length=max_length,
return_tensors="pt",
)
with torch.no_grad():
logits = model(batch["input_ids"], batch["attention_mask"])
probs = logits.softmax(dim=-1)[0]
for i in probs.argsort(descending=True)[:3]:
print(labels[str(i.item())], float(probs[i]))
模型使用自定义结构(BERT 编码器加线性分类头),不能用 AutoModelForSequenceClassification.from_pretrained() 或 pipeline() 直接加载。推理自动使用可用 CUDA,否则使用 CPU;下载完整后可离线运行。
发布文件
| 文件 | 说明 |
|---|---|
model.pt |
PyTorch state_dict(编码器与分类头),409,222,415 字节 |
modeling.py |
模型结构 BertTitleClassifier |
config.json |
BERT 结构配置 |
labels.json |
id2label / label2id |
inference_config.json |
max_length、版本、训练时间 |
tokenizer.json、tokenizer_config.json、vocab.txt |
分词器 |
special_tokens_map.json、added_tokens.json |
分词器特殊 token |
metadata.json |
训练参数、数据指纹、标签、设备 |
best_validation.json |
最佳轮次整体指标与各类别指标 |
requirements.txt |
推理依赖 |
数据与限制
- 原始 30 类中
书籍、鲜花绿植、钟表配饰因训练样本少于 100 被剔除,本版本只有 27 类,不能预测这 3 类。 - 没有
其他/无法分类类别,分布外输入仍会被分到 27 类之一。上线时建议增加置信度阈值(例如最高概率低于 0.5 时转人工),并对尾部类单独监控。 - 训练语料是中文商品标题,不适合非商品文本、其他语言或空输入。
ONNX INT8 版本。基座模型 hfl/chinese-macbert-base 的许可见其模型页;本仓库未声明新的许可证。
- Downloads last month
- 32