赛题名称:The Learning Agency Lab - PII Data Detection 赛题类型:自然语言处理 赛题任务:检测并删除个人信息
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/
赛题背景
在当今教育技术、在线学习和研究等来源的教育数据丰富的时代,广泛的 PII 是一个关键挑战。PII 的存在阻碍了分析和创建促进教育发展的开放数据集,因为公开发布数据会让学生面临风险。为了降低这些风险,在公开发布之前筛选和清理 PII 教育数据至关重要,数据科学可以简化这一过程。
手动审查整个数据集的 PII 是目前最可靠的筛选方法,但这会导致巨大的成本并限制教育数据集的可扩展性。虽然存在依赖命名实体识别 (NER) 的自动 PII 检测技术,但这些技术最适合共享常见格式(例如电子邮件和电话号码)的 PII。PII 检测系统很难正确标记姓名并区分敏感姓名(例如学生姓名)和非敏感姓名(例如被引用的作者)。
赛题任务
本次竞赛的目标是开发一个模型来检测学生写作中的个人身份信息 (PII)。您在教育数据中自动检测和删除 PII 的努力将降低发布教育数据集的成本。这将支持学习科学研究和教育工具的开发。
可靠的自动化技术可以让研究人员和行业挖掘大型公共教育数据集提供的潜力,以支持开发有效的工具和干预措施来支持教师和学生。
评价指标
提交的内容将在微观上进行评估,这是一个分类指标,为召回率和精度分配值。设置为 5,这意味着召回率的权重是精度的 5 倍。
对于document测试集中的每个值,您必须预测哪些token值具有正 PII label。您应该只包含正 PII label值的预测,提交中的每一行应对应于在唯一document-token对中找到的单个标签。此外评估指标需要row_id包含预测标签的枚举。
row_id,document,token,label
0,7,9,B-NAME_STUDENT
1,7,10,I-NAME_STUDENT
2,10,0,B-NAME_STUDENT
etc.
赛题数据集
竞赛数据集包含大约 22,000 篇由参加大规模开放在线课程的学生撰写的论文。所有论文都是针对一个作业提示而写的,该提示要求学生将课程材料应用于现实世界的问题。竞赛的目标是对论文中的个人身份信息 (PII) 进行注释。
为了保护学生隐私,数据集中的原始 PII 已使用部分自动化过程替换为相同类型的代理标识符。大部分论文都是为测试集保留的(70%),因此鼓励参赛者使用公开的外部数据集来支持训练数据。
竞赛要求参赛者为以下七种类型的 PII 分配标签:
- `NAME_STUDENT`- 学生的全名或部分姓名,不一定是论文的作者。这不包括教师、作者和其他人名。
- `EMAIL`- 学生的电子邮件地址。
- `USERNAME`- 学生在任何平台上的用户名。
- `ID_NUM`- 可用于识别学生身份的数字或字符序列,例如学生 ID 或社会安全号码。
- `PHONE_NUM`- 与学生相关的电话号码。
- `URL_PERSONAL`- 可用于识别学生身份的 URL。
- `STREET_ADDRESS`- 与学生相关的完整或部分街道地址,例如他们的家庭住址。
数据以 JSON 格式呈现,其中包括文档标识符、论文全文、标记列表、有关空格的信息和标记注释。使用 SpaCy English 分词器对文档进行分词。
令牌标签以 BIO(开始、内部、外部)格式呈现。当 PII 类型是实体的开头时,它会带有前缀“B-”。如果令牌是实体的延续,则其前缀为“I-”。非 PII 的令牌标记为“O”。
{test/train}.json - 测试和训练数据;本页给出的测试数据仅供说明之用,在代码重新运行期间将被隐藏的测试集替换。 (字符串):BIO 格式的令牌标签 (bool):一个布尔值,指示每个标记后面是否有空格。 (字符串):每个标记的字符串表示形式 (int): 论文索引 document
(int):论文的整数 IDfull_text
(字符串):论文的 UTF-8 表示形式tokens
(列表)trailing_whitespace
(列表)labels
(列表)[仅训练数据]Sample_submission.csv - 正确提交格式
赛题时间轴
2024 年 1 月 17 日- 开始日期。 2024 年 4 月 16 日- 报名截止日期 2024 年 4 月 16 日- 团队合并截止 2024 年 4 月 23 日- 最终提交截止。
优胜方案
第1名
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/discussion/497374
数据集和模型训练
数据集:使用了@nbroad提供的最有用的数据集,以及其他人工生成的论文数据集,增加了训练数据的多样性。 模型训练:采用4折交叉验证和全数据训练的方式,使用不同的Deberta模型变体进行多次训练。其中包括自定义的多样本dropout模型和加入BILSTM层的模型,以增加模型的多样性和泛化能力。
知识蒸馏和数据增强
知识蒸馏:利用已经在不同数据集上训练好的模型作为“教师”,来指导在同一验证集上训练的“学生”模型,通过这种方式改进模型的性能。 数据增强:在某些训练样本中,交换名字的首尾顺序来增强模型对PII标签的识别能力。
后处理策略
细化后处理规则:为每种PII标签设定不同的阈值,移除所有不符合标准的预测(如未大写的学生姓名、包含数字或下划线的学生姓名等)。 标签一致性:如果一个令牌在文档中的某处被预测为某个PII标签,那么在同一文档中所有相同的令牌也会被转换为该PII标签。 转换和移除不合理的预测:如电话号码预测如果是9位或以上数字则转为ID号码,移除不符合长度要求的ID号码和URL,以及不包含 @
符号的电子邮件预测。
集成和投票机制
集成方法:使用加权投票集成方法,通过Optuna在交叉验证数据上调整不同组别的权重和投票阈值。 模型多样性:每个集成组包含1-2个模型,使用不同配置的模型以提高预测的多样性。
效果和挑战
有效的集成和后处理:通过集成多种模型和精心设计的后处理步骤,大幅提高了模型在竞赛的LB(Leaderboard)和CV(Cross-Validation)上的表现。 未奏效的尝试:包括模型预训练、冻结层、尝试修复特定标签的预测、使用太慢的推理模式和特定标签模型训练等多项尝试均未取得预期效果。
第2名
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/discussion/497352
第二名的解决方案通过使用deberta-v3-large模型的集合、精细的预处理和后处理策略以及明智的超参数调整,成功地实现了高效的PII数据检测。以下是他们方案的关键部分:
预处理
令牌化:利用已经分割好的单词和标点符号的列表进行令牌化,而非原始文本,使用 is_split_into_words=True
选项来应对由多个令牌代表的单词时,取平均输出概率。目标转换:从目标中去掉B-和I-前缀,只预测7个类别。利用文本中的空格和其他单词分隔连续的PII项,这使得可以准确地将目标和预测转换回BIO格式。 数据增强:使用了由@nbroad生成的数据集,并与训练数据混合,生成数据的权重设为0.5,以增加训练样本的多样性。
模型和训练
模型选择:最终只使用了deberta-v3-large模型,因为其他模型在交叉验证和公开排行榜上的表现较差。 超参数: 最大长度设置为512、1024和2048。 步长为32。 批次大小为8。 学习率为2e-5,使用余弦退火调度器,训练4个周期,并设有1个周期的预热。 使用AdamW优化器。
后处理
名称标签的传播:一旦子串被分类为NAME_STUDENT,文档中该子串的所有其他出现都被重新标记为NAME_STUDENT。为了避免错误传播(例如单个"."被标记并传播),通过确保只有长度大于1且首字母大写的子串才能被标记为NAME_STUDENT。
街道地址的修正:对于仅在整个数据集中出现两次的"\n"空格子串,并且都是STREET_ADDRESS的一部分,强制将"\n"预测为STREET_ADDRESS,从而修复了地址预测中的间断。
概率转换:通过argmax转换概率为硬预测,并通过在公开排行榜上调整后,将类O的概率缩减系数统一设置为0.02-0.03。
第3名
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/discussion/497482
数据准备和预处理
预训练:使用由mpware生成的数据集进行预训练。这帮助提高了模型对不同类别的敏感性,尤其是在训练数据中样本较少的类别。 微调:结合比赛数据和nbroad的数据集进行微调。这种混合数据的策略有助于模型学习从不同来源中提取有用的特征。
模型训练
模型选择:最终选择使用deberta-v3-large模型。尝试了其他模型,但没有表现出更好的效果。 超参数调整: 学习率设置为1e-5。 批次大小为2,使用2的梯度累积以优化训练。 预热阶段占训练总时长的10%。 训练2个周期。
后处理
在后处理阶段,对“O”标签使用了阈值,以帮助减少假阳性预测。 开发了基于oof(out-of-fold)预测的规则来过滤极短的预测以及诸如“Mr”、“Mrs”、“Dr”等常见教师姓名的预测。 对于文本中相同姓名的不同标签预测(如“B-NAME_STUDENT”和“I-NAME_STUDENT”),通过后处理修正,确保预测的一致性。
交叉验证
使用分层的5折交叉验证,分层的基础是PII的存在与否。 虽然CV(cross-validation)和公开排行榜的表现相关性良好,但对于训练数据和公开排行榜中样本稀少的类别,CV和公开排行榜的指标并不是可靠的性能指标。
第4名
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/discussion/497367
第四名的解决方案在比赛中使用了多个创新方法,主要依赖于Deberta V3 Large模型的多次训练以及细致的后处理策略。以下是他们方案的核心组成部分:
模型和训练
模型选择:选择使用Deberta V3 Large模型,进行了10次不同的5折交叉验证训练。 训练数据集:使用了Meta-Llama-3-70B-Instruct生成的数据集进行训练,该数据集表现出较好的效果。 损失函数:使用Focal Loss以及结合BiLSTM和GRU头部的组合,以提高模型对不同类别标签的敏感性。 超参数: 学习率在1e-5到2e-5之间变动。 单批次大小为1或2。 使用AdamW优化器和带预热的余弦调度器。 最大输入长度设置为1280字符。
文本预处理
对训练数据进行轻微清理,特别是修正了标签错误和处理包含大量空格的文本。 使用unidecode库标准化包含Unicode字符的字符串,以减少在推理结果中的不匹配。
数据生成
使用LLM生成新的训练样本,包括使用Meta-Llama和Mistral生成的4600个样本。 对生成的数据进行了标记,使用faker库为不同的PII类型添加合成标签。
后处理
使用BERT分类器尝试区分学生名字和教师名字或虚构人物,减少假阳性预测。 应用正则表达式和XGBoost模型尝试减少假阳性,但这些方法最终未能在交叉验证或公开排行榜上显示出改进。
交叉验证和排名选择
使用基于PII存在与否的分层5折交叉验证,以确保训练的泛化能力。 最终选择提交方案时,重视交叉验证的一致性而不仅仅依赖公开排行榜的结果。
第5名
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/discussion/497306
第五名的解决方案通过使用deberta-v3-large模型的集合以及多样化的训练策略和后处理步骤,成功地实现了高效的PII数据检测。他们的方案涉及多位团队成员,每个成员都采用不同的方法来训练和优化他们的模型。以下是他们方案的关键部分:
集成部分
模型集成:整体方案包含了12个deberta-v3-large模型的集成。 多样化策略:每位团队成员使用不同的最大长度参数训练模型,以实现集成中的多样性。 集成方法:通过对每位成员的模型进行投票或平均后,再对成员间的预测结果进行简单投票,这在交叉验证和公开排行榜上表现最佳。
Ryota部分
模型训练:共创建了6个模型,全部使用deberta-v3-large作为骨干网络。 数据集:使用来自@nbroad、@mpware和@pjmathematician的外部数据集。 超参数:最大长度128,使用位置特征、EMA(指数移动平均)、层冻结和调整损失权重。 后处理:在集成前对每个单独模型应用了删除空白、确保前缀一致性和使用正则表达式移除假阳性等后处理步骤。
Takai380部分
多模型策略:训练了几种不同配置的deberta-v3-large模型,包括单独使用和与LSTM层结合的模型。 数据集和训练:主要使用@nbroad的数据集,并调整了非'O'类的损失权重。 规则基础处理:对特定PII类型(如NAME_STUDENT、URL和EMAIL)应用了基于规则的处理,以提高预测的准确性。
Minfuka部分
基础模型:使用deberta-v3-large,冻结嵌入和前6层。 训练和验证:结合竞赛数据和外部数据进行训练,独立的验证数据集来自竞赛训练数据。 超参数和损失函数:采用了交叉熵损失,调整了类权重,使用余弦学习率调度器。
第8名
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/discussion/497323
第八名的解决方案依赖于Deberta v3-large模型和精心设计的数据预处理策略,此方案主要关注于数据对齐、模型训练和精选外部数据。以下是方案的关键组成部分:
预处理和数据对齐
标签对齐:标签与PII标记的对齐在这个比赛中非常关键。参赛者发现使用数据集中共享的空格可能导致对齐问题,因此选择仅基于令牌、全文和令牌标签进行对齐,而不使用空格。 文本替换:根据其他参赛者的反馈,将"\n\n"替换为"|",将"\n"替换为"[BR]",这一调整显著提高了街道地址预测的准确性。
数据增强和选择
外部数据选择:选择合适的外部数据对模型的训练至关重要。参赛者对@nbroad,@mpware,和@tonyarobertson提供的数据进行了评估。结果显示,nbroad数据的预测较为直接,而mpware和tonyarobertson数据在ID_NUM和URL_PERSONAL类别上呈现挑战。 数据增强决策:基于以上的分析,决定仅使用比赛数据和nbroad数据进行训练。
模型训练
模型框架:使用Deberta v3-large进行模型训练,采用5折交叉验证的方法结合比赛数据和nbroad数据进行训练。 结果:最终模型在公开排行榜上达到0.968,私有排行榜上达到0.967,交叉验证得分为0.9703,仅计算比赛数据。
第9名
https://www.kaggle.com/competitions/pii-detection-removal-from-educational-data/discussion/497177
第九名的方案使用了一系列先进的模型和技术以及细致的后处理规则来改进PII数据检测的准确性。以下是他们方案的主要组成部分:
模型架构
DeBERTa v3 Large:这个版本的DeBERTa模型优化了自注意力机制,有助于更好地理解文本的语义。 DeBERTa v3 Large with Layer Drop and Multisample Dropout:这种模型变种通过在训练过程中随机丢弃某些层来增强模型的泛化能力。Multisample Dropout 进一步提高了模型在不同子样本上的鲁棒性。 DeBERTa v2 Xlarge with LoRA:LoRA(Low-Rank Adaptation)是一种模型调整技术,通过引入低秩矩阵来调整预训练模型的参数,有助于提高模型对特定任务的适应性。
这些模型处理长度为512的序列,使用128的stride进行滑动窗口预测,并将令牌级预测映射到字符级,再取字符最大值作为最终预测。
数据处理
使用改进的数据集,其中包括名人名言(这些名字不是PII)和构造的包含PII的句子。 纠正了官方 train.json
中约30个错误标注的实例。使用4折交叉验证找到最优设置,然后在全部数据上训练。 每个epoch都通过回调函数替换所有姓名,以增加模型对新姓名的适应性。
后处理策略
确保所有名字首字母大写,且仅包含字母和点。 移除以“Dr”,“Mr”,“Miss”等开头的名字标签,并调整后续令牌的标签。 如果文档中一个名字的某处被标记为PII,则将文档中所有该名字的出现都标记为PII。 如果一个I-标签前没有对应的B-标签,则将其改为B-标签。 移除所有含“coursera”,“wikipedia”,和“.edu”网址的标签。 如果电话号码标签包含超过6位数字,则将其标记为ID号码。 使用正则表达式处理电话号码的识别。
# 学习大模型 & 讨论Kaggle #

每天大模型、算法竞赛、干货资讯





