一、前言
爱搞事儿的师姐(”▽“)突然发来一条链接,问我要不要一起搞事儿参加个比赛,怀着初生牛犊不怕虎的想法,折腾就折腾吧,于是参加了搜狐图文匹配这个比赛,这也是搜狐第一届算法大赛。运气还不错,得了一个周冠军,全实验室吃了一顿大餐,最后也拿到一个还不错的名次:第4名
二、赛题介绍
(1). 组委会给定的搜狐新闻文本内容和相应的新闻配图等数据集来训练模型(数据集规模为10万条新闻和10万张新闻配图)。比赛要求在给定新的新闻内容集合和新的图片集合之后(数据集规模为2万条新闻和2万张新闻配图),参赛队伍能为每一篇新闻找到匹配度最高的10张图片,并且给出相应的排序,如下图:详情见官网。
(2). 评价指标为:NDCG
根据提供的答案,计算每条数据i的ndcg值ndcg(i),得分为:
因此这里就需要:
a.尽可能的将返回的10张图片为相关图片
b.保证每张图片得分最高
这样才能保证精准匹配,得分高。
三、解题思路
针对该题,我们采用推荐的思想。首先利用测试文本来去训练集找“最近”文本,采用TFIDF余弦距离计算文本距离,找出相似新闻的Top10,然后利用最相似训练样本的图片去搜索测试集中的候选图片,其中图片特征提取使用VGG16,图像相似度同样利用余弦距离。最后将搜索到的图片取Top1为测试文本的匹配图片。
(1). 简单预处理:
去除训练集、验证集、测试集中的无效图片。
(2). 处理过程
a.对文本进行分词,去停词等操作,构建词典,并计算文本的TFIDF向量;
b.利用开源VGG16权重对训练集和测试集的图片进行特征提取,获取fc2层作为图片特征;
c.计算文本Top1相似文本;
d.计算相似文本对应图片的Top10图片作为预测结果。
四、其他方案
- 其他队伍方案:SOHU图文匹配竞赛-方案分享
四、总结展望
由于刚接触深度学习,自然语言处理这些新的方向,很多东西做的不够完善,没有尝试端到端的建模方法。同时,由于自身能力不足,很多想法没能实现。不过,能到决赛现场跟很多优秀的同学学习交流,知道了很多其他的方法,如:OCR、各种文本编码(TF-IDF、LSI、LDA);对了,还有师兄强大的spark,能把我几十个小时的代码加速到1.5h。也见识了帝都的风貌(很遗憾有事儿先回了o(╥﹏╥)o),感觉运气很不错,很满意了。希望以后好好学习学习这方面的东西,不愧于研究生这三年。最后,附上视频与合照,以作纪念!!!