返回列表

14th place solution

604. The Learning Agency Lab - PII Data Detection | pii-detection-removal-from-educational-data

开始: 2024-01-17 结束: 2024-04-23 数据安全与隐私 数据算法赛
第十四名 solution - PII检测

第十四名解决方案

作者:kuro_B (Grandmaster)
团队成员:yyykrk, irrohas
排名:第14名

首先,我要感谢主办方和Kaggle工作人员组织了如此有趣的比赛。
我也非常感谢分享了许多宝贵资源(包括强大的外部数据集)的每个人。
最后,我要感谢我的队友 @yyykrk@irrohas。得益于他们的出色想法,我们获得了金牌,我终于实现了梦寐以求的大师称号!

摘要

  • 我们实现了一个13类模型(BIO格式)和8类模型(不区分B和I标签的模型)的集成。
  • 在集成之前,我们将13类模型的预测转换为8类。(例如,NAME_STUDENT的概率 = B_NAME_STUDENT的概率 + I_NAME_STUDENT的概率。)
  • 对于集成,我们在spacy token级别进行了加权平均。
  • 进行了后处理,包括将8类预测转换回13类预测。
  • 我们使用了deberta-v3-large、deberta-xlarge和longformer-base。模型有两种类型:后处理前的高召回率模型和高精确率模型。

模型

骨干网络 权重 额外数据集 类别数 类型(后处理前) 分词器 其他细节 CV/公开/私有
deberta-v3-large 0.182 nbroad 13 高召回率 默认 加权交叉熵(O的权重0.1) 0.969/0.969/0.956
deberta-xlarge 0.073 nbroad 13 高召回率 默认 加权交叉熵(O的权重0.1) 0.958/0.956/0.955
deberta-xlarge 0.073 nbroad 13 高召回率 默认 加权交叉熵(O的权重0.01) 0.962/0.965/0.957
longformer-base 0.073 nbroad 13 高召回率 默认 加权交叉熵(O的权重0.1) 0.959/0.959/0.951
deberta-v3-large 0.05 mpware 13 高精确率 添加"\n"和"\n\n"为特殊token SmoothFocalLoss 0.965/??/??
deberta-v3-large 0.1 nbroad 8 高精确率 添加"\n"和"\n\n"为特殊token 加权交叉熵(O的权重0.05) 0.965/0.972/0.958
deberta-v3-large 0.27 nbroad 8 高召回率 默认 排除所有负样本数据 0.966/0.974/0.957
deberta-v3-large 0.18 nbroad 8 高精确率 默认 包含所有负样本数据 0.965/??/??

※请仅将分数作为参考,因为每个模型使用的后处理方式不同。

关于8类模型(创意来源:@irrohas

我们构建了专注于8类分类的模型(或在集成中从13类转换为8类),原因如下:

  • 名字和姓氏不一定分别对应B-NAME_STUDENT和I-STUDENT_NAME。B-和I-只是按照它们出现的顺序决定的。
  • 在后处理中更容易将8类转换回13类。
  • 8类分类简化了模型的问题。
  • 我们不能完全排除在私有排行榜上出现I-USERNAME和I-EMAIL的可能性。
  • 我们可以更轻松地进行后处理。

至少在公开排行榜上,8类分类的表现优于13类分类。

添加"\n"和"\n\n"为特殊token(创意来源:@yyykrk

Deberta-v3-large无法对"\n"进行分词,而STREET_ADDRESS包含"\n",因此我们在某些模型中添加"\n"和"\n\n"作为特殊token。

tokenizer.add_tokens(["\n", "\n\n"], special_tokens=True)

加速过程(创意来源:@yyykrk

为了在集成中包含更多模型,我们采取了以下两项措施来加速处理过程:

  • 动态填充(动态填充
  • 根据不同的token长度应用不同的批处理大小

通过这个过程,推理代码的速度提高了一倍多。(例如,DeBERTa v3 large的推理时间从约1小时减少到约30分钟。)

后处理(pp)

①将8类预测转换回13类预测之前的后处理:

  • 【高影响】对NAME_STUDENT按(文档,token_str)进行概率平均。
  • 【高影响】对'O'的概率应用权重(类似于之前讨论的方法)。采用获得最高交叉验证分数的系数。
  • 【高影响】将不在默认DeBERTa-v3 token中的token(通常是\n、\n\n)分配给STREET_ADDRESS。
  • 将12位数字分配给ID_NUM。
  • 从概率中消除特定字符。
  • 将类似IV-0000的字符串分配给ID_NUM。

②将8类预测转换回13类预测

③将8类预测转换回13类预测之后的后处理

我们删除以下预测:

  • 以小写字母开头的"B-NAME_STUDENT"和"I-NAME_STUDENT"预测。
  • 不包含"tp"的"B-URL_PERSONAL"预测。
  • 不包含"@"的"B-EMAIL"预测。
  • 除"\n"外对空白字符串的所有预测。
  • 对":"和"-"的"B-ID_NUM"预测。
同比赛其他方案