BERTc-315M-MT

中文分词 + 词性标注 + 命名实体识别。基于 BERTc-315M 微调。

三任务联合微调。分词和实体走 CRF(序列约束强),词性走 softmax。词性只在词首字上有监督。

指标

指标
joint score 1.4712
CWS F1 0.9840
POS 准确率 0.9800
NER F1 0.9660

训练

  • 配方:5 epoch,batch 64,骨干 lr 2e-5 / 头 lr 5e-4,warmup 0.1,α_pos 2.0,β_ner 0.5,FGM ε 1.0
  • 数据:PD-1998(人民日报 1998 年 1-6 月 PFR 标注),train 102,739 句(199801-199805)/ dev 21,143 句(199806)

用法

from mt_model import BERTcForMT

model = BERTcForMT.from_pretrained(".")
print(model.predict("中国科学院计算技术研究所在北京"))
# {'words': ['中国科学院计算技术研究所', '在', '北京'],
#  'pos': ['ni', 'p', 'ns'],
#  'ner': [{'type': 'Ni', 'start': 0, 'end': 12}, {'type': 'Ns', 'start': 13, 'end': 15}]}

评测口径

指标在 dev 集前 2000 句上测 —— 与训练时选 best.pt 的口径一致 (训练脚本 --dev_limit 2000)。全量 21,143 句上是 分词 0.9790 / 词性 0.9787 / 实体 0.9597 / joint 1.4646。

joint score = 分词 F1 + 0.3 × 词性准确率 + 0.2 × 实体 F1。

标签体系

  • 分词:BIES
  • 词性:LTP base1 的 27 个标签(PD-1998 的 43 个映射过来)
  • 实体:BIES × {人名 Nh / 地名 Ns / 机构 Ni},PD 的 MISC 丢弃

词性代号可读性差(ns 地名 / ni 机构名 / nh 人名 / nd 方位词 / nl 处所词 / wp 标点),BERTc 仓库的 save/cws.py 有个把它们翻成中文的 交互式脚本。

依赖

只需要 PyTorchPieceTokenizer,没有别的。

模型定义 目录内的 model.py(纯 torch,不 import transformers)
权重读取 目录内的 checkpoint.py(85 行 safetensors 读取,不需要 safetensors 库)
分词器 PieceTokenizer,提供字级切分和词表
pip install torch
pip install git+https://github.com/Ismantic/PieceTokenizer

目录是自包含的:进到目录里直接 python example_*.py 就能跑,不依赖目录外的 任何文件。

Tokenizer

字级 SentencePiece,BERTc-Tokenizer.pt,词表 12536(pad=12531,mask=12535)。必须用 dict="no" 加载(字模式,不挂分词词典)——挂了词典编码结果会跟训练时不一致,而且不报错。

pip install git+https://github.com/Ismantic/PieceTokenizer

文件

文件 说明
model.safetensors 骨干 + 三个任务头
mt_model.py 推理入口 BERTcForMT
crf.py 线性链 CRF
model.py 骨干定义
tokenizer.py 字级 tokenizer
example_decode.py 示例

许可

Apache-2.0。训练语料各自的许可见对应数据集卡。

Downloads last month
96
Safetensors
Model size
0.3B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support