--- license: apache-2.0 language: - zh tags: - bert - chinese - token-classification - word-segmentation - pos-tagging - ner pipeline_tag: token-classification library_name: pytorch --- # BERTc-315M-MT 中文分词 + 词性标注 + 命名实体识别。基于 [BERTc-315M](https://huggingface.co/Ismantic/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) ## 用法 ```python 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` 有个把它们翻成中文的 交互式脚本。 ## 依赖 只需要 **PyTorch** 和 **PieceTokenizer**,没有别的。 | | | |---|---| | 模型定义 | 目录内的 `model.py`(纯 torch,不 import transformers) | | 权重读取 | 目录内的 `checkpoint.py`(85 行 safetensors 读取,不需要 safetensors 库) | | 分词器 | PieceTokenizer,提供字级切分和词表 | ```bash 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"` 加载**(字模式,不挂分词词典)——挂了词典编码结果会跟训练时不一致,而且不报错。 ```bash 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。训练语料各自的许可见对应数据集卡。