Update README.md
Browse files
README.md
CHANGED
|
@@ -6,41 +6,126 @@ base_model:
|
|
| 6 |
pipeline_tag: fill-mask
|
| 7 |
---
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
|
| 45 |
|
| 46 |
|
|
|
|
| 6 |
pipeline_tag: fill-mask
|
| 7 |
---
|
| 8 |
|
| 9 |
+
# chinese-ambiguous-chars-model
|
| 10 |
+
|
| 11 |
+
繁简转换歧义字判断模型,基于 [hfl/chinese-roberta-wwm-ext](https://huggingface.co/hfl/chinese-roberta-wwm-ext) 微调,用于处理 OpenCC 无法正确判断的一繁对多简场景。
|
| 12 |
+
|
| 13 |
+
---
|
| 14 |
+
|
| 15 |
+
## 背景
|
| 16 |
+
|
| 17 |
+
在繁简转换中,存在一个繁体字对应多个简体字的情况(参见[繁简转换一对多列表](https://zh.wikipedia.org/wiki/%E7%B9%81%E7%B0%A1%E8%BD%89%E6%8F%9B%E4%B8%80%E5%B0%8D%E5%A4%9A%E5%88%97%E8%A1%A8))。OpenCC 等基于字典的工具在处理此类歧义时,无法根据上下文做出正确判断。
|
| 18 |
+
|
| 19 |
+
典型例子:
|
| 20 |
+
|
| 21 |
+
| 繁体 | 语境 | 正确简体 |
|
| 22 |
+
|------|------|----------|
|
| 23 |
+
| 著 | 著名、著作 | 著 |
|
| 24 |
+
| 著 | 走著、看著 | 着 |
|
| 25 |
+
| 乾 | 乾隆、乾坤 | 乾 |
|
| 26 |
+
| 乾 | 乾燥、乾爹 | 干 |
|
| 27 |
+
|
| 28 |
+
本模型通过 MLM(Masked Language Model)的方式,在给定上下文的情况下,预测被遮盖的歧义字应转换为哪个简体字。
|
| 29 |
+
|
| 30 |
+
---
|
| 31 |
+
|
| 32 |
+
## 使用场景
|
| 33 |
+
|
| 34 |
+
**推荐用法:OpenCC 初步转换 → 本模型二次修正**
|
| 35 |
+
|
| 36 |
+
```
|
| 37 |
+
繁体原文:隨著時間的推移
|
| 38 |
+
↓ OpenCC t2s
|
| 39 |
+
随著时间的推移 ← 著未被正确转换
|
| 40 |
+
↓ 本模型
|
| 41 |
+
随着时间的推移 ✅
|
| 42 |
+
```
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
|
| 46 |
+
## 训练数据
|
| 47 |
+
|
| 48 |
+
数据集:[tardigrade-doc/t2c-plus](https://huggingface.co/datasets/tardigrade-doc/t2c-plus)
|
| 49 |
+
|
| 50 |
+
从以下数据源过滤得到:
|
| 51 |
+
- [shaowenchen/wiki_zh](https://huggingface.co/datasets/shaowenchen/wiki_zh)
|
| 52 |
+
- [TigerResearch/pretrain_zh](https://huggingface.co/datasets/TigerResearch/pretrain_zh)
|
| 53 |
+
|
| 54 |
+
### 训练字对与数据量
|
| 55 |
+
|
| 56 |
+
依据[繁简转换一对多列表](https://zh.wikipedia.org/wiki/%E7%B9%81%E7%B0%A1%E8%BD%89%E6%8F%9B%E4%B8%80%E5%B0%8D%E5%A4%9A%E5%88%97%E5%88%97%E8%A1%A8),结合数据分布进行筛选,最终保留以下 7 组歧义字:
|
| 57 |
+
|
| 58 |
+
| 繁体 | 简体 | 数据量 | 说明 |
|
| 59 |
+
|------|------|-------:|------|
|
| 60 |
+
| 著 | 著 | 249,116 | 著名、著作等 |
|
| 61 |
+
| 著 | 着 | 108,632 | 走着、看着等动态助词 |
|
| 62 |
+
| 畫 | 画 | 155,935 | 绘画、画面等 |
|
| 63 |
+
| 畫 | 划 | 180,328 | 划分、规划等 |
|
| 64 |
+
| 覆 | 覆 | 23,468 | 覆盖、倾覆等 |
|
| 65 |
+
| 覆 | 复 | 183,362 | 答复、回复等 |
|
| 66 |
+
| 鍊 | 炼 | 11,019 | 炼铁、锻炼等 |
|
| 67 |
+
| 鍊 | 链 | 16,014 | 链条、链接等 |
|
| 68 |
+
| 乾 | 乾 | 20,686 | 乾隆、乾坤等专有名词 |
|
| 69 |
+
| 乾 | 干 | 105,431 | 干燥、干净等 |
|
| 70 |
+
| 帳 | 帐 | 9,361 | 帐篷、蚊帐等 |
|
| 71 |
+
| 帳 | 账 | 3,998 | 账目、账单等 |
|
| 72 |
+
| 藉 | 藉 | 4,618 | 慰藉、狼藉等 |
|
| 73 |
+
| 藉 | 借 | 5,000 | 借口、凭借等(截断至5000) |
|
| 74 |
+
|
| 75 |
+
---
|
| 76 |
+
|
| 77 |
+
## 训练配置
|
| 78 |
+
|
| 79 |
+
| 参数 | 值 |
|
| 80 |
+
|------|----|
|
| 81 |
+
| 基座模型 | hfl/chinese-roberta-wwm-ext |
|
| 82 |
+
| epochs | 3(最优在 epoch 1) |
|
| 83 |
+
| batch size | 8(gradient accumulation 4步,等效32) |
|
| 84 |
+
| learning rate | 2e-5 |
|
| 85 |
+
| max length | 64 tokens |
|
| 86 |
+
| fp16 | ✅ |
|
| 87 |
+
| gradient checkpointing | ✅ |
|
| 88 |
+
|
| 89 |
+
### 训练结果
|
| 90 |
+
|
| 91 |
+
| Epoch | eval/loss | eval/accuracy |
|
| 92 |
+
|-------|-----------|---------------|
|
| 93 |
+
| 1 | **0.19** ✅ | 93.2% |
|
| 94 |
+
| 2 | 0.20 | 93.6% |
|
| 95 |
+
| 3 | 0.27 | 93.9% |
|
| 96 |
+
|
| 97 |
+
epoch 1 的 eval/loss 最低,为实际使用的权重(`load_best_model_at_end=True`)。
|
| 98 |
+
|
| 99 |
+
---
|
| 100 |
+
|
| 101 |
+
## 模型文件
|
| 102 |
+
|
| 103 |
+
| 文件 | 说明 |
|
| 104 |
+
|------|------|
|
| 105 |
+
| `model.safetensors` | PyTorch 模型权重(474MB) |
|
| 106 |
+
| `config.json` | 模型结构配置 |
|
| 107 |
+
| `tokenizer.json` | 分词器(Fast Tokenizer 格式) |
|
| 108 |
+
| `tokenizer_config.json` | 分词器配置 |
|
| 109 |
+
|
| 110 |
+
ONNX 版本另见对应仓库(通过 [convert-to-onnx](https://huggingface.co/spaces/onnx-community/convert-to-onnx) 转换)。
|
| 111 |
+
|
| 112 |
+
---
|
| 113 |
+
|
| 114 |
+
## 已知问题与可优化方向
|
| 115 |
+
|
| 116 |
+
- **训练数据存在噪声**:部分简体语料中「著」和「着」存在混用,导致训练时梯度波动较大,可通过 OpenCC 验证 label 合理性进行清洗
|
| 117 |
+
- **覆盖字对有限**:目前仅处理 7 组高频歧义字,其他数据量不足的字对(如「瞭/了」、「閒/间」等)未纳入训练
|
| 118 |
+
- **极端不均衡字对已排除**:如「臺/台」(676362 vs 0)、「甦/苏」(215855 vs 0)等,因简体候选字在语料中几乎不存在,已放弃用模型处理,建议直接用 OpenCC 词典映射
|
| 119 |
+
|
| 120 |
+
---
|
| 121 |
+
|
| 122 |
+
## 相关链接
|
| 123 |
+
|
| 124 |
+
- 基座模型:[hfl/chinese-roberta-wwm-ext](https://huggingface.co/hfl/chinese-roberta-wwm-ext)
|
| 125 |
+
- 训练数据集:[tardigrade-doc/t2c-plus](https://huggingface.co/datasets/tardigrade-doc/t2c-plus)
|
| 126 |
+
- ONNX 转换工具:[onnx-community/convert-to-onnx](https://huggingface.co/spaces/onnx-community/convert-to-onnx)
|
| 127 |
+
- 参考资料:[繁简转换一对多列表 - 维基百科](https://zh.wikipedia.org/wiki/%E7%B9%81%E7%B0%A1%E8%BD%89%E6%8F%9B%E4%B8%80%E5%B0%8D%E5%A4%9A%E5%88%97%E8%A1%A8)
|
| 128 |
+
|
| 129 |
|
| 130 |
|
| 131 |
|