第21名方案
第21名方案
作者: Dracarys | 比赛排名: 第21名
大家好,首先我要感谢我优秀的队友 @ryoya0902、@mks2192、@shahules 和 @kpriyanshu256,感谢你们带来如此有趣的比赛旅程。同时祝贺所有的获奖者!
这是一场很棒的比赛,我们在这场比赛中投入了大量时间,很高兴所有的努力最终都有了回报。
有效的方案总结
- 使用 RoBERTa base 作为基础模型,设置 MAX_LEN = 168。
- 使用了预处理(这将我们的本地 CV 从 0.711 提升到了 0.717)。
- 训练了 8 折(在我们的情况下,8 折给出了更好的 CV 结果)。
- 最后我们使用了所谓的“魔法”(后处理)(将我们的 LB 从 0.717 提升到了 0.724)。
- 此外,在每个 epoch 中进行多次验证也提高了我们的 CV。
无效的尝试
- 我们尝试将此问题作为 NER(命名实体识别)任务来解决,也尝试了无监督文本选择,但都没有效果。
- 我们尝试了各种模型架构,但除了
roberta-base 之外,其他效果都不好。
- 我们尝试针对每种情感训练单独的模型,但也失败了。
- 我们还尝试了许多预处理技术,例如移除所有噪声样本、清洗文本等,但都无效。
- 我们也尝试了 BERTweet,对我们来说也没用。
- 我们还尝试了同义词替换等数据增强方法。
- 数据增强的内核可以在这里找到。
有效的预处理方法
我们知道样本中存在大量的噪声,主要表现为单词之间存在额外的空格,例如:
文本: is back home gonna miss every one
选中部分: onna
预处理后: miss

- 关键在于你需要根据额外空格的数量来移动起始和结束索引。
- 预处理内核可以在这里找到。
训练
- 应用预处理后,我们将模型训练了 8 折。
- 我们使用了与 @abhishek 分享的相同的模型架构。
注意:需要清理训练内核,很快会分享。
推理
- 从模型获得
selected_text 后,我们应用了后处理,这其实就是上面分享的预处理内核的逆向工程。
- 这与这里讨论的内容几乎相似。
- 最终的推理内核可以在这里找到。
最后,我要感谢 @abhishek 和 @cdeotte 提供的精彩入门内核以及他们无私分享的精神,这对其他 Kaggle 参赛者帮助很大。