2017 开放学术精准画像大赛 - task2 解决方案

来源:转载

第一次和同学组队做比赛。参加了 2017 开放学术精准画像大赛,三个人各自完成一个task。
队伍最终排名第二名,三个任务的python代码已经开源,见 https://github.com/geekinglcq/aca

ps: 三个人能一起做完比赛,很开心。其次,比赛赛制虽然出现了一些小插曲,但总体来说主办方还是挺nice的。

我负责task2部分的任务,算法在初赛时表现不佳,排名17名。决赛时,测试集的数据分布和训练集、验证集的数据分布差异较大。我的模型泛化性能尚可,最终单项排名第2。下面简要介绍一下task2的解决方法。

颁奖时和前几名的队伍交流了一下做法,大抵可以分为两种方向:

  • 文本多标签分类
  • 兴趣推荐

我是把任务当成一个推荐问题做的,即根据已知的一些兴趣给待预测学者推荐兴趣。

程序利用学者发表的论文标题信息、论文的引用和学者投稿期刊信息来预测学者的兴趣标签。程序先利用四个简单模型分别计算学者的兴趣得分,然后按照权重求出学者兴趣的加权平均得分,最后选择得分最高的5个兴趣作为最终预测结果。

模型中出现的符号如下:A代表学者,AT表示训练集中的学者,AU表示待预测的学者,
I表示兴趣标签,T表示论文标题,Id表示论文的序号,P表示论文的发表刊物,SPAi代表第i学者投稿刊物集合,SIAi代表第i位学者的兴趣集合。

模型一

模型一的基本思想是:发表论文标题内容相似的学者,他们的研究兴趣相似。



程序首先从论文集合中找出每位学者Ai发表的文章,即STAi={Ti1,Ti2,...,Tik},集合STAi可以描述学者的研究内容。为了找出训练集中和待预测学者AUi研究内容相似的学者,模型利用待预测的学者AUi发表论文的集合STAUi和训练集中学者ATj发表的论文集合STATj进行标题文本相似度计算。论文标题集合STAUiSTATj的相似度越大,表示学者AUiATj的研究内容越相近,学者AUi和学者ATj的兴趣越相似。因此学者AUiATj的相似度Sims(AUi,ATj)可以定义为如下形式:
Sims(AUi,ATj)=Similarity(STAUi,STATj)
Sims(AUi,ATj)可以作为学者AUiATj兴趣相似度的表示。
最终,学者AUi对兴趣Ij的得分可以表示为:
Score(Ij|AUi)=∑k=0PSims(AUi,ATk)⋅Identify(Ij,SIATk)

Identify(Ij,SIATk)=⎧⎩⎨10 , Ij∈SIATk , Ij∉SIATk
根据上式,模型选取得分最高的5个兴趣作为学者的兴趣标签。

模型二

模型一先给待预测学者AUi在训练集中寻找研究内容相似的学者,再将学者的兴趣赋给待预测学者AUi。这个模型有两个问题:

  • 学者ATj对自己的三个兴趣{Ij1,Ij2,Ij3}的感兴趣程度不同;
  • 待预测学者AUi和找出的相似学者ATj,他们可能只有部分研究内容相似;

模型一使用同样的权重Sims(AUi,ATj)将兴趣{Ij1,Ij2,Ij3}赋给待预测学者AUi,不能真实地表示学者AUi研究兴趣。
为了解决上述问题,模型二直接计算待预测学者AUi和兴趣Ij之间的相似度。

模型二的基本思想是,学者发表的论文标题描述了学者的研究兴趣。




程序将训练集中学者发表的论文集合,按照学者的兴趣进行分类。
假设学者ATi发表的论文集合STATi,兴趣集合SIATi{Ii1,Ii2,Ii3},则将集合STATi加入到集合STIj1STIj2STIj3中,其中STIj1表示属于兴趣Ij1的论文标题集合。
每个兴趣Ii都有相应的论文集合STIi={Ti1,...Tip},集合STIi可以用来描述兴趣Ii
预测时,程序计算出集合STAUi和集合STIj的相似度,将其作为学者AUi对兴趣Ij的得分,即:
Score(Ij|AUj)=Similarity(STAUi,STIj)
根据上式,模型选取得分最高的5个兴趣作为学者的兴趣标签。

模型三

此模型的基本思想是:学者发表的文章,引用的文章和引用学者的文章可以反映出学者的研究兴趣。研究兴趣相似的学者在上述三种情况下重合度较高。



学者Ai上述特征可以表示为集合SIdAi={Idi1,...,Idik},模型利用集合SIdAi计算学者之间的相似度。
模型使用 Jaccard 相似系数作为相似性度量函数:
Sims(AUi,ATj)=|SIdAUi∩SIdATj||SIdAUi∪SIdATj|
和模型一类似,算法将相似函数Sims(AUi,ATj)作为学者AUi兴趣的得分。
AUi对兴趣Ij的感兴趣程度可以表示为:
Score(Ij|AUi)=∑k=0PSims(AUi,ATk)⋅Identify(Ij,SIATk)
Identify(Ij,SIATk)=⎧⎩⎨10 , Ij∈SIATk , Ij∉SIATk

模型四

此模型的基本思想是:期刊通常收录某一领域的论文,具有一定的兴趣集合。学者将论文投到与自己研究兴趣相近的期刊。模型先计算期刊的兴趣分布,然后根据待预测学者投稿期刊的信息,预测学者的兴趣。



模型将训练集中学者的兴趣指派为其投稿期刊的兴趣,由此可以得到期刊的兴趣集合SIPi={Ii1,...,Iik},则
Score(Ik|Pi)=C(Ik,SIPi)∑lj=0|(SIPi)|
在计算待预测学者兴趣时,先统计待预测学者AUi的发表的期刊信息SPAUi={Pi1,...,Pik}。根据集合SPAUi可以计算出学者对于期刊Pi的偏好:
wi=C(Pi,SPAUi)|(SPAUi)|
其中C(Pi,SAUi)表示集合SAUiPi的个数。
由此可以计算出待预测学者对兴趣Ii的得分:
Score(Ij|AUi)=∑k=0Pwk⋅Identify(Ij,SIATk)

Identify(Ij,SIATk)=⎧⎩⎨10 , Ij∈SIATk , Ij∉SIATk

预处理

模型一和模型二涉及计算文本相似度的计算。文本处理过程包括:

  • 去停用词
  • 将文本转化为词袋模型
  • 文本转成TF-IDF表示
  • LSI模型降维LSI
  • 计算文本相似度

模型融合

上述四个模型利用不同特征预测学者的兴趣。为了使预测更加客观、合理,程序对四个模型进行了融合。待预测学者AUi对兴趣Ij的最终得分
如下:
Score(Ij|AUi)=∑k=04αkScorek(Ij|AUi)

总结

比赛中没有用到高大上的模型和算法,难度属于文本处理入门级别。

其他队伍的模型比较优雅一些。有使用Graph Embedding、SGD、RandomForest等,期待他们的算法和代码。

分享给朋友:
您可能感兴趣的文章:
随机阅读: