本质上,可以通过统计的形式,排出某个条件下(如大厂当中),最流行的SKILLS(如python)。

本文认为,1)“这个排序条件”组合多变,单纯的统计方法难以灵活胜任;2)SKILL之间存在联系,统计方法难以评估或建模。因此,提出了构建SKILL NET+主题模型的方法。

数据集形式:两个关联集合,即公司属性集合(即,topic/文中认为的排序条件)和公司要求的SKILL集合。

构建SKILL NET:只要在同一个SKILL集合当中,即为两个SKILL画一条边。

主题模型:上述SKILL NET 中,每个SKILL都可以当作一个document,而其单挑邻居则可认为是words。需要注意的是,这里的主题topic不是隐式的,每一维对应一个topic label,即公司属性/排序条件。因此,有一个单独的binary vector刻画SKILL同topic label之间的联系。正因为如此,当学出主题模型所有参数后,可以利用这个binary vector构造不同的“排序条件”,对不同的SKILL计算排序分值。

直观上,可以直接基于统计,对不同条件下的流行SKILL进行排序;但由于数据缺失或不均衡等问题,使得某些情况难以统计,所以利用主题模型进行了一次平滑,然后再基于概率模型进行排序。另外,在对skill token进行概率(流行度)统计时,还可以考虑每个文档在该topic下的概率。直接统计的话,只能默认该概率均为1.

 文中Eq.(5) 中第二个求和符号里的第一个表达是一个指示函数?当j对应的主题与条件指标中列出的主题一致则为1,其他为0。

为什么要构造SKILL NET,而不直接用Job Posting作为documents?

--这样得到的文档关于主题的分布就等同于Center Skill对应于主题的分布。应该也可以降低文档的数量。考虑的是全局Kills之间的关系。

--Labelled LDA中被labelled的对象就发生了改变。现在是center skill以及其关联的skill token,原来是单个job posting中的skill token。

 

以下附件是Labeled LDA,其代码 https://github.com/vgeek-z/Labeled-LDA-Python/blob/master/model/labeled_lda.py

LDA 代码参考 https://github.com/vgeek-z/python-LDA-master/blob/master/lda.py

主题模型介绍: https://blog.csdn.net/xuqn0606/article/details/83720997  或者 https://nuoku.vip/users/2-Nengjun/articles/94-2017-06-22



留言

登录 请先登陆, 再留言!