第14名解决方案 (使用 Notebooks)
第14名解决方案 (使用 Notebooks)
作者: Alex LiChen | 比赛排名: 第14名
离金牌只差一名!我只使用 Kaggle Notebooks 完成了这次比赛:
我选出的最高分 Private LB 提交得分为 0.558/.437,而我最好的得分为 0.545/0.444:
- 我在 BIO 标记的约 200-400 个单词的文本块上微调了 bert-base-cased + crf 模型。
- 对我来说,关键在于人工标注更大的训练集。我使用正则表达式找到了初始集合,然后遍历模型判断为假阳性的列表,将我认为有效的样本重新归类为正样本集。最终,这个更大的数据集在简单提交时 Public LB 得分为 0.601,一个子集得分为 0.621。
- 在训练时,我使用了 80% 包含正样本提及的文本块,20% 没有提及的文本块。我尝试过对 20% 包含正样本的文本块进行简单的交叉验证 (CV),但这在 Private LB 上泛化效果不佳。
- 我没有使用提供的默认
clean_text() 函数,而是在训练和推理期间保留了大小写和括号内容,这提升了 LB 分数。
给 Kaggle Notebook 用户的建议
如果你像我一样只用 Kaggle Notebooks 参加比赛,这里是我学到的一些技巧:
- 尽可能使用 CPU - 我会选择 2-3 个文件作为训练集,先用这些测试文件运行所有代码来排查 bug。
- 建立流程后,从蒸馏模型 开始,它们训练更快,能节省 GPU 时间。先在小样本数据上运行。
- 尽早开始比赛。
- 寻找具有系统性优势的比赛 - 在这种情况下,人工标注提供了一种我知道其他人不会去尝试复制的“优势”。