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
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for bangbangkido/Product-Classifier-MacBERT

Finetuned
(68)
this model
Quantizations
1 model