中文没有空格,总得有人决定词在哪里结束。这个决定通常只做一次,埋在一个预处理脚本里,然后被后面每一步继承。
它看起来是格式问题,实际是一个分类判断,而且会改变去重、检索,以及模型眼里「哪两句是同一句」。
歧义是常态,不是错误
同一串字可以有两种切法,在不同上下文里都成立。把一种切法当作事实存下来,等于告诉模型只有一种读法。
原始文本作为主字段保留,分词作为可替换的派生层,带自己的版本号。
字、词,两个视角都要
字级模型对未登录词更稳,词级模型对语义更准。生产环境通常两个视角都要,语料应该让两者都不用重新处理就能拿到。
存字符偏移,而不是只存词串,这样换一次词典,所有标注都不会作废。
归一化需要留档
全角半角、简繁、标点变体,真实数据里都有。每种选择都合理,不记录选择才不合理。
我们给每份集合记一个归一化档,并且同一次训练里绝不混用两种档。
交付前我们跑的清单
- 原始文本与分词结果同时保留?
- 标注用字符偏移,而不是词编号?
- 归一化档按集合记录?
- 简繁素材可以分开?
- 去重跑在归一化文本上,且档位有记录?
答不上这些,这份语料就是一串没法重新分词的 token。Zovda 先把原始层放稳,再在上面做 Datuva 可用的派生层。
从哪里开始
从任务出发:检索、分类、生成,各自偏好同一份文本的不同视角。语料总目录写明了中文各族的阶段位置。
告诉我们任务和量,我们会在 1 个工作日内回复。
