第11名解决方案
第11名解决方案
作者:Takoi (Grandmaster)
团队成员:colum2131, MST, 213tubo, Takoi
发布时间:2022年3月30日
首先,感谢竞赛主办方举办这次比赛。也要感谢社区在 Notebook 和 Discussion 中分享的许多想法。
摘要
我们集成了6个模型并进行了后处理。接下来,我们提取了候选预测字符串,并使用 XGBoost 等模型预测每个预测字符串是否为真正例(TP)。最后,我们为每个类别设定了阈值,并切除了预测字符串的右边缘。
模型
我们参考了以下 Notebook:
https://www.kaggle.com/cdeotte/tensorflow-longformer-ner-cv-0-633
以下6个模型根据模型不同使用了不同的 max_length 进行训练:
- longformer-large-4096 (max_length:2048)
- roberta-large (max_length:512)
- bart-large (max_length:512)
- funnel-transformer-large (max_length:512)
- distilbart-cnn-12-6 (max_length:512)
- deberta-large (max_length:1024)
模型集成
由于不同的模型使用不同的分词器,一旦预测结果被转换为字符级别,它们就会被重新聚合为 longformer 的 token 单位。针对以下不同位置,我们使用了不同的权重进行集成:
- 0 ~ 512
- 0 ~ Funnel-transformer-large-token-len
- Funnel-transformer-large-token-len ~ 1023
- 1023 ~
Funnel-transformer-large-token-len 是 funnel-large 的 512 个 token 转换回 longformer 分词器单位时的长度。大约是 720。
后处理
- 将每个预测值乘以系数
- 与相邻 token 的预测结果进行集成
- 参考以下 Notebook 提取预测字符串的候选。这些候选不仅包括预测概率最高的类别,也包括第二高的类别。有些预测字符串是在起始位置不是 B-token 的情况下提取的。
https://www.kaggle.com/cdeotte/tensorflow-longformer-ner-cv-0-633
- 以下3个模型用于预测预测字符串是否为 TP。特征是通过对每个预测字符串的集成结果进行聚合创建的。为每个类别设定了阈值,只保留预测值高于阈值的预测字符串。
- XGBoost
- MLP
- LSTM
- 最后,为每个类别设定预测字符串的长度阈值和裁剪百分比,对于超过阈值的预测字符串,按设定的百分比删除其右端。