Appearance
Language Distribution Challenge
- 来源:
noai-train/联合训练/Day2/T2 Language Distribution Challenge 张壬泽 - 类型:NLP
- 原始资料:
语言分类挑战 题目描述.md、baseline.py、metrics.py、Day2 ref/T2.../题解.md - 题面完整性:完整
- 解法资料完整性:有题解与参考代码
题面大意
对“对多”社交 App 文本做三分类:古文、现代中文、伪中国语。训练集 1500 条,完全由 AI 生成,且类别极不均衡:现代中文 1350、古文 135、伪中国语 15。测试集 300 条,三类各 100 条,来自真实用户帖子,存在明显分布偏移。只允许使用 bert-base-chinese 预训练模型,最终得分为 Macro F1 减去低 precision/recall 罚分。
数据特点
训练集和测试集差异很大:训练是 AI 生成,测试是真实用户;训练类别比例严重偏斜,测试类别均衡。伪中国语训练样本极少,但在测试集中占 1/3,并且与现代中文有表面相似性。文本均为汉字序列,核心区分点来自语序、助词、文言词汇、日式表达和字符搭配。
考点
核心考点是分布偏移和极端类别不平衡下的文本分类。单纯按训练分布微调 BERT,容易把大部分样本判成现代中文。要提升 Macro F1,必须重视少数类召回,并对伪中国语做有针对性的特征或训练策略。
涉及知识点
- BERT 中文文本分类与 tokenizer。
- 类别不平衡:class weights、重采样、focal loss。
- Macro F1 与 precision/recall 罚分。
- 分布偏移:合成训练数据到真实测试数据。
- 文本规则特征:助词、语序、文言虚词、日式词序。
解法思路
推荐方案是以 bert-base-chinese 微调为主,但训练时使用类别权重或重采样,让伪中国语和古文在 loss 中有足够影响。验证集不应按原训练比例随机划分后只看 accuracy,而应模拟测试均衡分布,重点观察三类 precision、recall 和 Macro F1。
可补充规则/统计特征:现代中文常见“的、了、吗、在”等,古文有“之、乎、者、也”等文言结构,伪中国语可能出现日式 SOV、省略助词、汉字词组搭配异常。可以把这些特征拼到 BERT CLS 后接分类头,或用于后处理阈值调整。
可选/多种解法
BERT 加权微调:最直接,class weight 反映测试均衡目标。
规则增强模型:BERT 预测 + 字符/词序规则后处理,修正伪中国语漏判。
数据扩增:对少数类做模板扩写、回译式改写或基于规则生成,但要避免生成风格继续偏离真实用户。
特殊技巧
评分有低 precision/recall 罚分,所以某类“一个都不报”会双重受损。可以单独调每类阈值,而不是简单 argmax。伪中国语只有 15 条训练样本时,过拟合风险极高,保守做法是冻结部分 BERT 层或使用较小学习率,并加强规则先验。
调参优化
这题训练分布极不均衡,调参必须面向 Macro F1 和三类 recall。BERT 路线可调学习率、冻结层数、max length、batch size、epoch、类别权重和重采样比例;伪中国语样本极少时,较小学习率、早停和规则增强通常比长时间微调更稳。后处理可为每类单独调阈值,尤其是提高伪中国语召回。规则特征的权重也应通过验证集校准,避免把古文误判为伪中国语。
注意事项
题面只允许 bert-base-chinese,不能换 RoBERTa、ERNIE 等模型。测试集无标签,answer.csv 只用于本地可能存在的评测,不应参与训练。由于训练分布和测试分布完全不同,训练集 accuracy 没有参考价值。
推广意义
这题代表真实 NLP 中最常见的问题之一:训练数据来自合成或弱标注,线上数据分布不同,且业务关注少数类。解法思想可推广到风控文本、低资源语言识别、生成文本检测和社区内容审核。