为了找到真正的人才,公司必须提出最不寻常的搜索方式。 EPAM还喜欢寻找解决常见问题的新方法。该实验始于我们的招聘人员求助于数据实践部门的同事,并要求考虑如何为公司中空缺职位的候选人创建搜索系统。该系统将有助于减少在开源*中寻找相关候选人所需的时间,并提高合格候选人的质量和数量。我们的数据科学团队与EPAM培训中心的学生一起完成了这项任务。接下来,我将讨论可以解决此问题的主要方法,我们的解决方案和结果。通常,该职位更多地是参考性的,但通过特定业务案例的角度来看。我也试图离开链接,对我来说似乎很重要的地方,以便您可以了解有关特定技术或方法的更多信息。*-候选人,用户自己发布其自身信息的网站和资源。对这些资源的访问不受限制,包括这些资源的许可证和服务条款(服务条款)。
任务
通常,自动化意味着过程优化。在我们的案例中,目标被制定为提高寻找候选人的效率。这种情况下的效率是通过找到资源最少的最合适的候选人空缺来表达的。
, (). , . ( ) , , . : , , , . , .
, : , , , .
— . , . , , .
:
. , . : , , , — . , () .
#1. — One-Hot Encoding (OHE)
, 1 — , 0 — .
这种方法很简单,但是有几个缺点。也许这种方法的主要问题是,在其帮助下获得的空间技能将彼此正交,而我们将无法将它们之间的相似性进行比较。很有可能,例如,区分诸如Java7和Java8之类的技能对我们来说并不重要,而将它们与与Java开发人员的职位完全无关的其他技能加以区分也很好。通过这种方法,Java8中的Java7将与Python中的Java7相同。此外,这种方法的缺点是我们无法区分样本中常见的特定技能和流行技能。这将在我们的搜索中产生一定的噪音,并干扰区分候选者和突出显示相似的候选者。
略微调整流行技能对搜索的影响的一种简单方法是,不使用二进制估计,而是使用基于样本整体和单独文档中出现频率的加权估计。为此,请使用TF-IDF方法。但是在这种情况下,我们仍然无法评估这些技能之间的相似程度。
方法#2。矩阵分解
在太空中,每个技能都是太空坐标的候选人代表是多余的,因为一部分技能几乎是相同的。因此,类似的技能可能会崩溃成某些因素/成分/潜在症状。寻找这种成分的一种方法是一组矩阵分解方法。User-Skills , . . — (skills’ embedding). , — , , .
, , . , . — , . , .
, , .
#3.
, . , — . , , , , ( supervised ), , , , , , , (unsupervised ). .
, . , , , .
— , .
,
— StarSpace. «», . , , , , , .
, , . , .
#4.
, — .
, . , , — , — . , — . — - — , , . , , .
, — .
节点-例如,候选人可能彼此有点相似,在同一社区中,拥有共同的利益,在同一家公司工作或具有其他相同的特征-这负责统一性特征。另一方面,可以通过以下事实将不同组的节点结合在一起:它们在组中扮演着相同的角色-领导者,助理领导者,信息管理员,传播者,局外人。如果我们想比较两个图,我们可以理解,一列中的领导者与另一列中的领导者扮演着相同的角色-这就是所谓的结构相似性。
图形表示的一种或多种方法试图同时考虑图形的同质性和结构等效性来构造空间。
图分解
首先,我们考虑一种基于图分解的方法。, : , .. — 1, — 0. , .
, .
a-like word2vec*
( , ) . , , , . . , , . , — w2v(skip-gram), doc2vec. ( word2vec).
您可以阅读有关类似图形表示方法的更多信息,例如,此处-DeepWalk,Node2vec,Graph2vec。资源图上的卷积网络
这里的想法与之前的方法类似:我们遍历图并使用有关其邻居的信息来表示单个节点。另外,关于图形的一般结构和节点特征的信息也涉及表示的训练。这些方法的主要创新之处在于,该模型以使两个节点在潜在空间中的位置更近的方式标准化每个节点的值,这些节点在子图中的结构角色越相似。
此过程称为图折叠。
更多详情可在这找到:,
PyTorch BigGraph — Facebook Research. , . , , .
:
: — , . , , , .
, — IT-. , , IT-, (.. ), , .
GitHub (github.com, Terms of Service), . , GitHub API GitHub Archive, GitHub , .
GitHub . : ( , ), , , , , (), , , , , , .
GitHub , , . - , ; (), , . , , .
GitHub, embedding, .. . , .
.
, embedding.
embedding , , — .
. .
, GitHub , . , , , .
4 , , 5 . , , , , : Java, JavaScript, Python, DevOps, Data Science. 3500 . , , 35% , 65% — . , . , , Java Developer — 60%, , , . , DevOps, , . , — 25,5% .
我们取得了什么成就
- 该模型推荐的相关候选人的百分比与包括求职资源在内的其他系统的百分比相当。
- 可以将候选人的内部基础增加几百个,从而增加以前未涉及的资源。
- 与其他“冷”搜索源(即不用于直接求职的源)相比,搜索1个候选人所需的时间减少了29%。
- 我们能够使用稀有技能更有效地处理请求。
- 并雇用一些不在积极工作中的高级工程师。
我想改善的地方
最终的解决方案具有我们尚无法解决的缺点:- 评估候选人的熟练程度仍然没有好的解决方案。
- GitHub , .
- , , GitHub.
- , .
, , , , .
, , , .