第九名方案
第九名方案 (🥧)
我对在私有排行榜上上升这么多感到非常惊讶。
模型
- DeBERTa v3 large
- DeBERTa v3 large(采用layer drop和多采样dropout)
- DeBERTa v2 xlarge(使用LoRA)
由于DeBERTa v2和DeBERTa v3使用不同的分词器,我先在token级别获取预测,将其映射到字符,然后对构成最终(spacy)token的字符取最大值。所有模型的最大长度为512,步长为128。
数据
- 使用Mixtral 8x7b生成的略加改进的数据集。我在其中加入了名人名言(这些人名不是PII),以及类似「我和我的队友Joe和Sally」的句子,其中Joe和Sally是PII,还添加了「请查看我的作品在我的网站[URL]」等句子。你可以很方便地提示模型将这些加入文章。
- 经过修正的train.json(来自比赛)。大约有30个左右的标签需要修改,我手动进行了修复。
我采用4折交叉验证来寻找好的超参数设定,然后在全部数据上进行训练。每个epoch我还会使用回调函数将所有名字替换为新的名字。
后处理
- 名字必须为首字母大写,且只能包含A-Za-z和“.”。
- 去掉dr、mr、miss等被错误标记为名字的称呼,并确保下一个token使用B-标签而不是I-。
- 如果一个名字在同一文档中出现多次,并且其中一次标记为PII,则将所有出现的该名字都标记为PII。
- 如果一个I-预测前面没有B-,则将其改为B-。
- 将coursera、wikipedia、.edu等URL从预测结果中移除。
- 如果电话号码预测的数字超过6位,则将其改为id_num类型。
- 使用正则表达式匹配电话号码。
最终想法
确保映射对齐非常烦人。我花在调试对齐错误上的时间不计其数…