具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
招聘方在为某一职位招聘人才时,首先将给出该职位的职位需求,例如,在招聘网站中发布职位名称、职位需求等信息,而应聘者则可以通过邮件或站内信等方式,针对该职位投递个人简历。招聘方收到一份或者多份备选简历后,需要对备选简历进行筛选,确定每份备选简历中的内容,是否符合给出的职位需求。
通常,可以由招聘方的人力资源员工或招聘职位的负责人,人工进行备选简历的筛选。但这种方式将耗费一定的人力与时间,增加招聘过程的人力成本,并且对筛选人的经验与主观判断较为依赖,缺乏客观统一的标准。因此,在一些招聘场景中,招聘方越发倾向于自动筛选简历。
在自动筛选简历的方案中,可以将给定的职位需求看作1个集合,并将每份备选简历,分别看作1个集合,从而使对某份备选简历是否符合职位需求的判断,可以看作对该备选简历与职位需求这2个集合的相似性的比较。具体地,对于给定的职位需求信息的文本,可以通过文本中的逗号、句号、顿号等标点符号,将文本段落划分为语句,并以划分得到的每个语句作为1个元素,构成职位需求对应的集合。例如,针对“软件工程师”职位,招聘方给定的职位需求为:
“本科学历,30岁以下,有1年相关工作经验;
具备Java编程能力,精通eclipse或android studio工具系列;
熟练掌握TCP、HTTP等网络传输协议,熟悉数据库、XML等常用技术。”
则根据上述规则划分后,将得到“本科学历”、“30岁以下”、“有1年相关工作经验”、“具备Java编程能力”及“精通eclipse或android studio工具系列”等等9个语句,并可以构成1个包括9个元素的语句集合。
同样的,对于某份备选简历,也可以通过简历的文本中的标点符号,将文本划分为语句并构成该简历对应的语句集合。
Jaccard相似性系数常用于衡量有限样本集之间的相似性,例如,给定2个集合A、B,其中分别包括有限个数的元素,2个集合中存在相同的元素,也存在不同的元素,则集合A与集合B的Jaccard相似性系数为,集合A与集合B中相同元素个数与全部元素个数的比值,计算公式为:
其中,J(A,B)即为集合A与集合B的Jaccard相似性系数,显然其数值应该在区间[0,1]内,如假设集合A={a,b,c,d,e},集合B={b,d,e,f},则集合A、B中相同元素的个数为3,全部元素的个数为9,即:
计算得到J(A,B)的值后,即可以此衡量集合A与集合B的相似性。因此,衡量职位需求对应的语句集合、与备选简历对应的语句集合的相似性时,需要统计2个集合中的全部元素的个数、及相同元素的个数。通过将职位需求对应集合中的每个语句,分别与备选简历对应集合中的每个语句进行两两比较,可以统计2个集合中的相同语句及其个数,从而求得2个集合的Jaccard相似性系数。
然而,在多数情况下,与招聘方给出的职位需求相比,应聘者投递的简历的内容更为丰富,例如,可以包括求职意向、教育背景、工作经验及自我评价等几个部分,而仅就工作经验这一部分,通常也比职位需求中的描述更为详细。因此可以认为,备选简历中的字数通常远大于职位需求中的字数,相应地,划分文本得到对应集合后,备选简历对应集合中元素的个数,也将远大于职位需求对应集合中元素的个数。
而统计职位需求与备选简历对应的2个集合交集的元素个数,需要将2个集合中的元素进行两两比较,假设职位需求对应集合P中包括p个元素,备选简历对应集合Q中包括q个元素,则n的值每增加1,相应地,元素比较次数将需要增加m次,即集合中元素个数的增加,将成倍地增加Jaccard相似性系数的计算量。
此外,招聘过程中,招聘方可能会收到大量简历,例如在校招期或年后等求职高峰期,企业可能会收到成百甚至上千份简历,如果其中的每份简历的Jaccard相似性系数的计算量均成倍增加,则对全部备选简历进行筛选将消耗大量的计算资源,影响自动筛选方案的筛选效率。
针对上述问题,本说明书提供一种简历筛选方案,能够有效控制参与Jaccard相似性系数计算的集合中元素个数,从而降低计算资源的消耗,提高简历筛选效率。
参见图1所示,该方法可以包括以下步骤:
S101,获得预先存储的需求特征集合;
当需要计算Jaccard相似性系数,从而对备选简历进行筛选时,首先获得给定的职位需求信息的需求特征集合。这里的需求特征集合具体可以是,对给定的职位需求信息的文本进行划分后,以得到的文本片段为需求特征(亦即元素),从而构成的集合。
例如,仍然可以以文本中的标点符号,将职位需求信息的文本划分为语句形式的文本片段;又如,根据前述“软件工程师”职位的职位需求可以看出,职位需求信息的文本,通常使用分号与句号标识一条完整需求的结束,因此也可以只以分号及句号,将职位需求信息的文本划分为需求条目形式的文本片段;等等。
获得需求特征集合后,在后续步骤中将基于该集合或者其子集,计算Jaccard相似性系数。在实际应用中,计算Jaccard相似性系数,需要统计参与计算的2个集合中,相同元素的个数,而集合中元素的复杂程度,将影响进行统计时的计算量、及统计结果的准确度。
例如,如果2个集合中的元素为数字、字母、汉字等简单的元素,如仍假设集合A={a,b,c,d,e},集合B={b,d,e,f},则可以较容易地确定元素(字母)之间是否相同,因而通过对元素两两进行比较,即可统计出集合A与集合B中相同元素的个数为3(相同元素为b、d、e)。
而如果2个集合中的元素较为复杂,如假设集合C={具备Java编程能力,精通eclipse或android studio工具系列,熟练掌握TCP及HTTP等网络传输协议,熟悉数据库及XML等常用技术},集合D={精通Java面向对象编程,熟悉WEB应用研发的过程,熟练掌握JSP/Servlet及JDBC,……,熟练运用标准SQL语句,熟悉MySQL及SQLServer2005数据库},集合C与集合D中的元素均为包括多个汉字及单词的语句,如果需要两两比较是否相同,显然需要涉及更为复杂的计算,消耗较多的计算资源,且得到的比较结果可能准确度较低。
但针对职位需求信息的文本,由于划分前的文本存在实际表达的意义,比较备选简历与职位需求对应集合的相似性,实际是需要比较备选简历与职位需要的文本实际表达的意义的相似性,因此如果将职位需求信息的文本,划分为单个的汉字与字母,如将“具备Java编程能力”划分为“具”、“备”、“J”、“a”、“v”、“a”、“编”、“程”、“能”、“力”,则得到的元素(汉字及字母)虽然易于比较是否相同,且比较结果的准确度较高,但已失去表达原有意义的功能,因而可能会降低整个集合的相似性比较结果的准确度。
因此,针对职位需求信息的文本,划分文本构成集合并计算Jaccard相似性系数时,所依据的划分规则,将影响计算Jaccard相似性系数的计算量、及计算结果的准确性。对此,本说明书进一步地提供基于预设词库对文本进行分词,得到文本中的词条的规则。
例如,可以使用现有的IK Analyzer分词工具,基于IK Analyzer的词库,对职位需求信息的文本进行分词,在分词之前还可以针对性地添加词条至IK Analyzer的词库,提高分词结果的准确度,或者可以针对性地将诸如“精通”、“熟练”、“掌握”等不需要的词条从词库中删除,以获得更有效的词条集合。关于IK Analyzer分词工具、及IK Analyzer词库分词的具体过程,可参见其他相关资料,本说明书中不做详细说明。当然,现有的中英文分词工具及词库不仅限于IK Analyzer,此外也可以为简历筛选的应用定制更精确的词库与分词方式,本说明书所提供的基本方案对此不作限定。
本说明书所提供的方案中,筛选备选简历时,需要逐一地确定每份备选简历,是否符合给定的职位需求信息,即计算每份备选简历与职位需求信息对应集合的Jaccard相似性系数。在计算Jaccard相似性系数前,首先需要获得需求特征集合,可以在计算职位需求信息与每份备选简历对应集合的Jaccard相似性系数前,均对职位需求信息的文本进行一次划分,得到一个需求特征集合,但显然,内容相同的职位需求信息,基于相同的预设划分规则,划分文本后得到的需求特征集合中元素也是相同的,因此,为了节约计算资源,可以预先划分得到需求特征集合并存储,从而在每次需要用到该集合时,直接获得预先存储的需求特征集合。
S102,根据所述预设划分规则,对任一备选简历的文本进行划分,得到划分的文本片段构成的简历特征集合;
在计算该备选简历与职位需求对应集合的Jaccard相似性系数前,还需要获得简历特征集合。对备选简历进行文本划分构成集合的过程中,所涉及的具体划分方式与划分规则,可以与需求特征集合相同,在此不再赘述。
而与需求特征集合不同的是,每份备选简历划分文本后得到的文本片段可能不同,因而可能构成不同的简历特征集合,针对每份备选简历,在计算Jaccard相似性系数前,均需要进行文本划分。
此外,可以理解的是,只要能够实现获得需求特征集合及简历特征集合从而进行后续步骤的目的,如图1的流程图所示,本说明书实施例并不需要对获得2个集合的先后顺序进行限定。
S103,确定需求特征子集;
S104,确定简历特征子集;
为了便于描述,将S103与S104结合进行说明。
在S101与S102中,分别得到了给定职位需求的需求特征集合、及1份备选简历的简历特征集合,如前面所述,备选简历的内容通常比职位需求更为丰富,因而划分文本得到的简历特征的个数更多,例如假设需求特征集合P中包括p个元素,简历特征集合Q中包括q个元素,则q通常远大于p。如果直接计算需求特征集合与简历特征集合的Jaccard相似性系数,计算量将成倍增加,需要消耗大量的计算资源。
本说明书提供的方案中,为了控制简历特征集合中简历特征的个数,求取只包括该集合中部分(k2个)简历特征的子集,并基于元素个数更少的简历特征子集,计算Jaccard相似性系数,从而降低计算量。k2的取值为求取子集前预先设定的,设定方式可以为静态的,如设置固定的数值,也可以为动态的,如设定固定的百分比、或阶梯变化的数值、等等。
为了进一步降低计算量,还可以求取包括k1个元素的需求特征子集,k1的取值同样为求取子集前预先设定的,且可以有多种设定方法。根据前述可知,针对同一职位进行简历筛选时,需求特征集合中元素的个数(假设为p)是固定的,因此k1的取值可以以已经确定的p值为基准,设定为小于p的值,并且由于需求特征集合可以预先获得并存储,因此可以在每次筛选时设定k1的取值并求取需求特征子集,也可以设定同一的k1值并预先求取与存储需求特征子集。
可以理解的是,需求特征集合中元素个数通常远小于简历特征集合,因此对Jaccard相似性系数计算量的影响相对较小,因此k1的取值也可以为p,也就是需求特征子集即为需求特征集合本身。
在实际筛选简历的应用中,所设定的k1与k2的取值也可以根据实际情况进行调节,例如,当需要更高的计算结果准确度时,将k1与k2的取值调高,或者当需要更高的计算效率时,将k1与k2的取值调低,等等。
本说明书提供的方案中,在求取需求特征集合与简历特征集合的子集时,基于LSH(Locality Sensitive Hashing,局部敏感哈希)算法中的Minhash算法。
LSH算法的基本思想是将高维数据空间中的数据映射到低维数据空间后,将有很大概率不会改变数据集合之间的相似性。例如,如果需求特征集合与简历特征集合具有较高的相似性,则经过LSH算法降维之后,得到的需求特征子集与简历特征子集,也将有很大概率具有较高的相似性;而如果需求特征集合与简历特征集合具有较低的相似性,则经过LSH算法降维之后,得到的需求特征子集与简历特征子集,也将有很大概率具有较低的相似性。
Minhash算法是一种具体的LSH算法,基于Minhash算法,通过哈希函数h(x),可以将集合中的每个元素,均映射为1个整数,如果h(x)合适,则元素与整数的映射关系将具有很好的均匀性,即能够将不同元素映射成不同的整数。通过哈希函数h(x)映射得到的整数,即为对应元素的哈希值,而哈希值最小的元素,即为具有最小哈希值的元素。通过不同的哈希函数h(x),可以将集合中的元素,映射为不同的整数排列,因此可以得到不同的具有最小哈希值的元素。
例如,集合P={分布式,大数据,加密},假设经过哈希函数h1(x)映射之后,元素与整数的映射关系为:分布式映射为3,大数据映射为2,加密映射为1;而经过哈希函数h2(x)映射之后,元素与整数的映射关系为:分布式映射为4,大数据映射为5,加密映射为6,则可以根据2个哈希函数h1(x)与h2(x),分别得到2个具有最小哈希值的元素加密(1)与分布式(4),此外,也可以直接根据哈希函数h1(x),得到2个具有最小哈希值的元素,即哈希函数h1(x)映射后最小的2个整数1与2分别对应的加密与大数据。因此,通过不同的哈希函数h(x),可以得到不同的具有最小哈希值的元素,且通过每个哈希函数h(x),可以得到1个或多个具有最小哈希值的元素。
总之,本说明书提供的方案中,在求取集合的子集时,是求取集合中的k1个(或k2个)具有最小哈希值的元素,构成集合的子集,从而在降低计算量的同时,保持参与计算Jaccard相似性系数的2个子集的相似性不发生较大的改变。
具体地,基于Minhash算法确定需求特征子集时,首先预设n个哈希函数,然后基于这n个哈希函数,分别获得k1个具有最小哈希值的需求特征,构成需求特征子集。例如,可以预设k1个哈希函数,并分别基于每个哈希函数,获得1个具有最小哈希值的需求特征,即基于预设的k1个哈希函数,共获得k1个具有最小哈希值的需求特征;又如,可以预设1个哈希函数,并基于此哈希函数,获得k1个具有最小哈希值的需求特征。
这里举出的2个例子可以认为是两种极端的情况,显然,获得具有最小哈希值的元素基于的哈希函数越多,越能够确保元素到哈希值间的映射关系的均匀性,但所基于的哈希函数越少,则能够使计算量更小,即可以认为第1个例子中的映射关系最均匀,而第2个例子中的计算量最小。
因此,在实际筛选简历的过程中,可以根据实际情况,预设个数合适的哈希函数(1≤n≤k1),从而调节映射关系均匀性与计算量之间的均衡。且通过每个哈希函数获得具有最小哈希值元素的个数,也可以预先灵活地设定,如可以通过每个哈希函数获得k1/n个元素,也可以通过均匀性较好的哈希函数获得较多的元素,而通过均匀性较差的哈希函数获得较少的元素,等等,只要能够保证可以通过n个哈希函数获得k1元素即可。
此外,如果如前面所说,k1的取值为p,也就是需求特征子集即为需求特征集合本身,则无需基于Minhash算法即可以直接确定需求特征子集。
由简历特征集合,基于Minhash算法,确定简历特征子集的过程,与上述确定需求特征子集的过程基本相同,在此不再赘述。本说明书也无需对哈希函数的具体求解过程进行阐述,并且确定需求特征子集与确定简历特征子集,可以基于相同或者不同的哈希函数,本说明书提供的方案对此不做限定。
此外,如前面所述,本说明书实施例中,并不需要对获得需求特征集合、与简历特征集合的先后顺序进行限定,而获得需求特征集合后即可确定需求特征子集,获得简历特征集合后即可确定简历特征子集,因此,如图1的流程图所示,本说明书实施例,也并不需要对确定2个子集先后顺序进行限定。
并且可以理解的是,由于需求特征集合可以预先存储,如果对各份简历进行筛选时,所使用的需求特征子集均相同,则也可以预先由Minhash算法求取统一的需求特征子集,并在各次筛选时确定该子集,而无需每次均进行求取计算。而由于各个简历特征集合,是在各次简历筛选时,对各份简历划分得到,因此各个简历特征子集,也需要在各次筛选时,根据各次得到的简历特征集合确定。
S105,计算所述需求特征子集与简历特征子集的Jaccard相似性系数,并在计算结果大于预设阈值的情况下,确定所述备选简历为符合所述给定的职位需求信息的简历。
在S103、S104中确定需求特征子集与简历特征子集后,即可计算2个集合的Jaccard相似性系数。为了便于表述,这里将需求特征子集用子集P’表示,简历特征子集用子集Q’表示,则二者的Jaccard相似性系数表示为J(P’,Q’),计算公式为:
分母的值即子集P’与子集Q’中元素个数相加,而分子的值需要比较2个子集中的元素是否相同确定。例如,对于子集P’与子集Q’中的各个元素,两两进行比较,以确定相同的元素,从而统计得到分子的值。
此外,如S101中所述,在划分文本得到集合时,如果基于预设词库对文本进行分词,则得到的子集P’与子集Q’中的元素,均为较为简单同时具有实际表达意义的词条,在统计分子的值从而计算J(P’,Q’)时,可以以更低的计算量得到更准确的计算结果。
基于上述划分规则,本说明书进一步提供一种统计2个集合交集元素个数的方案:
首先,针对需求特征集合(以下用集合P表示)中的任一词条,确定当前的简历特征集合(以下用集合Q表示)中,是否也包含该词条。
一种可以采用的方案是,针对集合P中的任一词条,在集合Q中查找是否存在汉字及顺序均相同的词条,如果存在则表示集合Q中包括该词条,如果不存在则表示不包括。例如,对于集合P中的词条“大数据”,可以在集合Q中查找是否存在汉字及顺序均相同的词条“大数据”,如果存在则表示集合Q中包括“大数据”,如果不存在则表示不包括。
另一种可以采用的方案是,基于预设语料库,对集合P与集合Q中的词条进行语义识别,并针对集合P中的任一词条,查找集合Q中是否存在与该词条具有相同语义的词条;若是,则确定该词条包含于集合Q中;若否,则确定该词条不包含于集合Q中。并且,可以首先确定该词条在语料库中具有相同语义的词条,然后在集合Q中查找该词条及其他具有相同语义的词条;也可以首先在集合Q中进行查找,在查找过程中对集合Q中的每个词条,基于语料库确定其是否与该词条具有相同语义;等等。显然,预设语料库可以是现有语料库,也可以根据应用场景更精确地定制,例如,“大数据”与“EMC”从通常意义来讲并非语义相同的词条,但在相关领域的职位需求与简历中通常用于表示相近的意义,因此也可以认为二者语义相同并预先加入语料库。
当然,还可以采用其他的方案,本说明书中不再一一阐述,并且不对具体的方案进行限定。此外,确定集合P中的词条是否包含于各份备选简历对应的各个集合Q的步骤,可以预先地统一完成,也可以在筛选每份备选简历时,逐一地完成,本说明书中对此也不需进行限定。
在针对集合P中的各个词条是否包含于确定集合Q之后,则可以根据确定的结果,得到集合Q的子集Q’中包括的集合P的子集P’中的词条个数(以l表示)。
一种具体的实施方式可以是,预先构建用于写入确定的结果的词条矩阵,矩阵的第1列对应集合P中的各个词条,每一行对应1个词条,例如,假设集合P={Java,分布式,大数据,加密,…,支付经验},则可以构建形如下表1所示的词条矩阵:
集合P |
|
|
|
Java |
|
|
|
分布式 |
|
|
|
大数据 |
|
|
|
加密 |
|
|
|
…… |
|
|
|
支付经验 |
|
|
|
表1
在筛选每份备选简历时,均获得该预先构建的词条矩阵,并以第1列之后的每一列分别对应1份备选简历,例如,对于筛选的第1份简历(以集合Q1表示),则可以对应词条矩阵的第2列。然后在确定集合P中的任一词条是否包含于集合Q1的过程中,如果确定该词条包含于集合Q1,则将词条矩阵中该词条对应的行、与第1份简历(集合Q1)对应的列交叉确定的元素置为1,否则置为0。
例如,假设Q1={加签、加密、Java,MVC,ERP,…,搜索},则可以确定集合P中的词条“Java”和“加密”,包含于中集合Q1,因此可以得到形如下表2所示的词条矩阵:
集合P |
集合Q1 |
|
|
Java |
1 |
|
|
分布式 |
0 |
|
|
大数据 |
0 |
|
|
加密 |
1 |
|
|
…… |
|
|
|
支付经验 |
0 |
|
|
表2
得到形如表2的词条矩阵后,即可以得到集合Q的子集Q’中包括的集合P的子集P’中的词条个数l。例如,可以首先确定子集P’中的各个词条,在词条矩阵的第1列中的位置,然后统计所确定的位置所对应的行,在第2列中置1的个数,最后确定置1的各个词条中包含于子集Q’的词条的个数,即为2个子集的交集中的词条个数l。
确定k1、k2及l的值后,即可代入公式(2),计算子集P’与子集Q’的Jaccard相似性系数。
在本说明书的一种具体实施方案中,预先构建、并将集合P的词条与各个集合Q的0/1结果写入的词条矩阵,还可以用于求取各个集合Q的子集Q’。如下表3所示:
集合P |
集合Q1 |
…… |
集合QN |
Java |
1 |
|
0 |
分布式 |
0 |
|
1 |
大数据 |
0 |
|
1 |
加密 |
1 |
|
1 |
…… |
|
|
|
支付经验 |
0 |
|
1 |
表3
选取词条矩阵的任一个行排列,可以以集合Q对应列的第1个1所对应的词条,作为集合Q的1个具有最小哈希值的元素。例如,可以以表3所示的行排列,作为一种随机行排列方式,则集合Q1与的具有最小哈希值的1个元素分别为“Java”与“分布式”,而如果要取集合QN的3个具有最小哈希值的元素,则为“分布式”、“大数据”及“加密”。
综上,将k1、k2及l的值代入公式(2),完成J(P’,Q’)的计算后,即可根据计算结果,衡量子集P’与子集Q’的相似性,亦即该备选简历是否符合给定的职位需求信息。可以预先设定阈值,作为衡量的标准,如果计算结果大于预设阈值,则可以确定该备选简历为符合所述给定的职位需求信息的简历,否则确定不符合。在实际应用时,阈值的具体取值,可以根据实际情况灵活地设定,例如,如果备选简历较少,筛选目标为保留大部分的备选简历,则可以设置较低的阈值,如0.2,从而只筛除相似性低于0.2的简历。
下面结合一个更为具体的实例,对本说明书提供的简历筛选方法进行说明。
某企业需要为“软件工程师”一职招聘员工,并给定了如下的职位需求信息:
“具备Java编程能力,精通eclipse工具系列;
熟练掌握TCP、HTTP等网络传输协议,熟悉数据库、XML等常用技术。”
则可以使用现有的IK Analyzer分词工具,并基于定制后的IK Analyzer词库,对上面的文本进行划分,得到包含10个元素的需求特征集合P={Java,编程,eclipse,TCP,HTTP,网络,传输,协议,数据库,XML}。
构建第1列元素为集合P各个的词条矩阵,如表4所示:
表4
预先设定k1与k2的值均为集合P中元素个数的80%并取整,简历筛选阈值为0.2。
则取k1=8,并基于预先设定的1个哈希函数,求取集合P中的8个具备最小哈希值的元素,构成子集P’={Java,TCP,HTTP,网络,传输,协议,数据库,XML}。
针对收到的某份简历,同样使用IK Analyzer分词工具、并基于同样的IKAnalyzer词库,对简历中的文本进行划分,得到包含40个元素的简历特征集合Q={编程,android,TCP/IP,SQL,数据库,C++,互联网,传输,……}(为简化描述,这里并不一一罗列出所有元素)。
使用复旦NLP语料库对集合P与集合Q中的词条进行语义识别,确定集合P中的10个词条,是否包含于集合Q中,并将包含的词条在表4所示的矩阵对应位置置1,不包含的词条在表4所示的矩阵对应位置置0,得到如下所示的表5:
表5
取k2=8,并基于构建的如表5所示的矩阵的8种随机行排列,求取集合Q的8个具备最小哈希值的元素,构成子集Q’={SQL,TCP/IP,互联网,C++,android,编程,数据库,传输}。
仍根据如表5所示的矩阵,确定计算子集P’与子集Q’的l=4,则带入Jaccard相似性系数的计算公式为:
由于0.25>阈值0.2,因此确定该备选简历为符合给定的职位需求信息的简历。
可以看出,应用上述方案,在对每份备选简历进行筛选时,通过计算职位需求信息、与备选简历对应集合的Jaccard相似性系数,衡量备选简历是否符合职位需求信息。而参与计算Jaccard相似性系数的集合,并非直接使用划分文本得到的集合,而是基于Minhash算法分别求取相似性不变、但元素个数更少的子集,从而在确保计算结果准确度的同时,降低计算量,提高筛选效率。
相应于上述方法实施例,本说明书实施例还提供一种简历筛选装置,参见图2所示,该装置可以包括:
需求特征集合获得模块110,用于获得预先存储的需求特征集合,所述需求特征集合为:根据预设划分规则,对给定的职位需求信息的文本进行划分得到的文本片段的集合;
简历特征集合获得模块120,还用于根据所述预设划分规则,对任一备选简历的文本进行划分,得到划分的文本片段构成的简历特征集合;
需求特征子集确定模块130,用于确定需求特征子集,所述需求特征子集中包括:所述需求特征集合中的k1个具有最小哈希值的需求特征,k1为预设值并不大于所述需求特征集合中特征个数;
简历特征子集确定模块140,用于确定简历特征子集,所述简历特征子集中包括:所述简历特征集合中的k2个具有最小哈希值的简历特征,k2为预设值并小于所述简历特征集合中特征个数;
相似性计算模块150,用于计算所述需求特征子集与简历特征子集的Jaccard相似性系数,并在计算结果大于预设阈值的情况下,确定所述备选简历为符合所述给定的职位需求信息的简历。
在本说明书提供的一种具体实施方式中,预设划分规则可以包括:基于预设词库对文本进行分词,得到文本中的词条的规则。
在本说明书提供的一种具体实施方式中,相似性计算模块,可以包括:
集合词条确定单元,用于确定所述需求特征集合中的任一词条是否包含于所述简历特征集合中;
子集词条确定单元,用于根据确定的结果,得到所述需求特征子集的词条中,包含于所述简历特征子集的词条的个数l;
相似性计算单元,用于计算所述需求特征子集与简历特征子集的Jaccard相似性系数:
在本说明书提供的一种具体实施方式中,集合词条确定单元,可以包括:
语义识别子单元,用于基于预设语料库,对所述需求特征集合及所述简历特征集合中的词条进行语义识别;
词条查找子单元,用于针对所述需求特征集合中的任一词条,查找所述简历特征集合中是否存在与该词条具有相同语义的词条;若是,则确定该词条包含于所述简历特征集合中;若否,则确定该词条不包含于所述简历特征集合中。
在本说明书提供的一种具体实施方式中,相似性计算模块,还可以包括:
矩阵获得单元,用于获得预先构建的词条矩阵,所述词条矩阵的任一行对应所述需求特征集合中的1个词条,任一列对应1个备选简历;
矩阵构建单元,用于在确定该词条包含于所述简历特征集合中的情况下,将所述词条矩阵中该词条与该简历对应的元素置为1;在确定该词条不包含于所述简历特征集合中的情况下,将该词条与该简历对应的元素置为0。
在本说明书提供的一种具体实施方式中,子集确定模块,具体可以用于:
基于预设的n个哈希函数,获得所述需求特征集合的k1个具有最小哈希值的需求特征,构成需求特征子集,1≤n≤k1;其中,第i个函数对应k1i个具有最小哈希值的需求特征,k1i为预设值且
在本说明书提供的一种具体实施方式中,子集确定模块,具体可以用于:
基于预设的m个哈希函数,获得所述简历特征集合的k2个具有最小哈希值的简历特征,构成简历特征子集,1≤m≤k2;其中,第j个函数对应k2j个具有最小哈希值的简历特征,k2j为预设值且
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现前述的简历筛选方法。该方法至少包括:
一种简历筛选方法,该方法包括:
获得预先存储的需求特征集合,所述需求特征集合为:根据预设划分规则,对给定的职位需求信息的文本进行划分得到的文本片段的集合;
根据所述预设划分规则,对任一备选简历的文本进行划分,得到划分的文本片段构成的简历特征集合;
确定需求特征子集,所述需求特征子集中包括:所述需求特征集合中的k1个具有最小哈希值的需求特征,k1为预设值且不大于所述需求特征集合中特征个数;
确定简历特征子集,所述简历特征子集中包括:所述简历特征集合中的k2个具有最小哈希值的简历特征,k2为预设值且小于所述简历特征集合中特征个数;
计算所述需求特征子集与简历特征子集的Jaccard相似性系数,并在计算结果大于预设阈值的情况下,确定所述备选简历为符合所述给定的职位需求信息的简历。
图3示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作***和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述的简历筛选方法。该方法至少包括:
获得预先存储的需求特征集合,所述需求特征集合为:根据预设划分规则,对给定的职位需求信息的文本进行划分得到的文本片段的集合;
根据所述预设划分规则,对任一备选简历的文本进行划分,得到划分的文本片段构成的简历特征集合;
确定需求特征子集,所述需求特征子集中包括:所述需求特征集合中的k1个具有最小哈希值的需求特征,k1为预设值且不大于所述需求特征集合中特征个数;
确定简历特征子集,所述简历特征子集中包括:所述简历特征集合中的k2个具有最小哈希值的简历特征,k2为预设值且小于所述简历特征集合中特征个数;
计算所述需求特征子集与简历特征子集的Jaccard相似性系数,并在计算结果大于预设阈值的情况下,确定所述备选简历为符合所述给定的职位需求信息的简历。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。