竞赛复盘(2)-新冠疫情相似句对判定大赛 线上第一名方案

背景

比赛官网:新冠疫情相似句对判定大赛 (https://www.datafountain.cn/competitions/350)
类型: NLP-文本分类
赛题任务:
比赛整理近万条真实语境下疫情相关的患者提问句对,要求选手通过自然语言处理技术识别相似的患者问题。0为不相似,1为相似

解决方案

新冠疫情相似句对判定大赛 线上第一名方案

解读

Top1解决方案由zzy99提供,里面的答辩ppt,从数据市例到技巧尝试,还有技术总结,讲解流程适合小白理解整个赛题思路,不在此重复大佬的内容。

重点Trick

对抗训练

解决方案使用了国内NLP著名博主苏剑林的对抗训练代码,详见“对抗训练浅谈:意义、方法和思考(附Keras实现)”,我认为在计算机视觉的比赛也能使用。

sigmoid加权融合

这是一个挺有意思的加权融合方法,直接看看代码,我加入了对应注释

#定义sigmoid的函数
def f(x):
    res=1/(1+np.e**(-x))
    return res
#针对sigmoid出现倒数,利用log和x/(1-x),最后求得[0,1]的预测值
def f_ver(x):
    res=np.log(x/(1-x))
    return res
#使用各模型预测结果
model = build_model(mode='bert',filename='bert',lastfour=False)
res1 = do_predict('../user_data/model_data/bert_weights')

model = build_model(mode='bert',filename='ernie',lastfour=False)
res2 = do_predict('../user_data/model_data/ernie_weights')


model = build_model(mode='bert',filename='roberta',lastfour=False)
res3 = do_predict('../user_data/model_data/roberta_weights')

#Sigmoid加权融合
res = f((2.025*f_ver(res1) + 2.025*f_ver(res2) + 1.95*f_ver(res3))/6)

具体原理引用zzy99的解释:
“”用反函数取出sigmoid/softmax归一化之前的状态做平均,信息量更大,提升明显“”

题外话

推荐英剧浴血黑帮(Peaky Blinders),不妨通过解说视频了解英国1战后到2战前的历史,对剧情解读颇有帮助。
竞赛复盘(2)-新冠疫情相似句对判定大赛 线上第一名方案

上一篇:菜单形式安装Haproxy的脚本


下一篇:完整的用户代理字符串检测