jjzjj

【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一

Better Bench 2023-06-12 原文


更新时间:2023-4-6

相关链接

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题二

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题三

【2023年第十一届泰迪杯数据挖掘挑战赛】C题泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题四

1 题目

一、问题背景

在新时代背景下,随着大学生毕业人数不断增加,大学生求职问题已成为广泛关注的社 会热点。而且受疫情影响,诸多企业的招聘都改为线上进行,脱离时间和空间的限制,招聘 需求不断上涨,有近六成企业招聘需求增加,其中需求量较大的科技研发、数字化、蓝领技 能岗位都存在不同程度的人才短缺。但从人才供给来看,应届生数量增加,2022 年高校毕 业生达到创纪录的 1076 万人,而且部分企业校招开展暂缓或推迟,因此出现校招需求缩减 或冻结,这些因素都加剧了应届生就业的严峻形势。基于种种因素,出现就业竞争压力大、 招聘与求职信息不对称等现象。

泰迪内推平台是聚焦于“大数据+”和“人工智能“领域的求职招聘网站,该平台融合了多家企业发布的招聘信息,同时平台也为求职者提供求职信息的展示。为缓解毕业生就业 压力,同时满足企业对人才的需求,泰迪内推平台会定期为高校学生提供优质岗位推荐,解 决毕业生就业的同时也缓解企业用人难的问题,为校企之间搭建起资源互换的桥梁,力求实 现人才的供需对接和教育资源转化,通过深化产教融合,促进教育链、人才链、产业链与创 新链有机衔接。

因此,对招聘信息进行分析研究,了解不同职业领域的需求特点,挖掘兴起的数据类行 业相应的人才需求现状及发展趋势,为广大求职者提供正确的就业指导有着重要意义。

二、解决问题

1.招聘信息爬取

从泰迪内推平台(https://www.5iai.com/#/index)的“找工作“页面和“找人才”页面,爬取所有招聘与求职信息并整理,依据招聘信息ID记录每条招聘信息并保存为“result1 - 1.csv”文件,求职信息则依据求职者ID记录并保存为“result1-2.csv”文件,涉及的招聘信息ID和求职者ID均来自网址路径后端的数字串,如图1所示。(模板文件见附件1中的CSV文件)

1 某招聘信息网页

2.招聘与求职信息分析

应用问题 1 的招聘信息与求职信息构建画像:根据采集的企业招聘信息,从招聘岗位、 学历要求、岗位需求量、公司类型、薪资待遇、岗位技能、企业工作地点等多个方向建立招 聘信息画像;根据采集求职者求职信息,从预期岗位、薪资需求、知识储备、学历、工作经 验等多个方向建立求职者画像。

3.构建岗位匹配度和求职者满意度的模型

在招聘和求职过程中,企业面对多位优质求职者,将会考虑求职者能力要求、技能掌握 等多方面,岗位匹配度是体现求职者满足企业招聘要求的匹配程度;同样,求职者对于多种 招聘信息,也会依据自身条件和要求,选取符合自己心意的岗位,因此求职者满意度指标可 客观体现求职者对企业招聘岗位的满意程度。对于不满足岗位最低要求的求职者,企业可定 义其岗位匹配度为 0。同样,对于不满足求职者最低要求的岗位,求职者可定义其求职者满 意度为 0。

根据问题2的招聘信息与求职者信息,构建岗位匹配度和求职者满意度的模型,基于该模型,为每条招聘信息提供岗位匹配度非0的求职者,将结果进行降序排序存放在“resul3 - 1. csv”文件中,以及为每位求职者提供求职者满意度非0的招聘信息,将结果进行降序排序存放在“result3 - 2. csv”文件中。(模板文件见附件1中的CSV文件)

4.招聘求职双向推荐模型

假设招聘流程如下:设某岗位拟聘人,泰迪内推平台向企业推荐岗位匹配度非0的n位求职者发出第一轮报价,求职者如果收到多于1个岗位的报价,则求职者选取满意度最高的岗位签约,每个求职者只允许选择1个岗位签了约。第一轮结束后,平台根据当前各招聘信息的剩余岗位数,向后续被推荐求职者发出第二轮报价,如此继续,直到招聘人数已满或者向所有拟推荐求职者均已发出提供为止。

在上述招聘流程中,由于条件优秀的岗位求职者都愿意去,而条件优秀的求职者各岗位 都愿意录用,很难做到履约率达到百分之百,因此履约率高低是评价平台的推荐系统优劣的 重要指标。这里的履约率定义为:

履约率=所有岗位的签约人数之和/所有拟聘岗位人数之和

请为平台设计招聘求职双向推荐模型,使得履约率指标达到最高。并将招聘岗位与求职者签约成功的结果存放在“resul4.csv”文件中。

三、附件说明

附件1是问题1,问题3和问题4的模板文件,文件均为csv文件,采用ANSI编码。Result1-1.csv:从泰迪内推平台爬取的招聘信息,文件参考表1格式。

Result1-2.csv:从泰迪内推平台爬取的求职信息,文件参考表2格式。表2 result1-2.csv样例.

result3 - 1. - csv:该文档存储每条招聘信息中岗位匹配度非0的求职者,需将结果进行降序排序,具体字段名和样例见表3。

result3 - 2. - csv:该文档存储每位求职者满意度非0的招聘信息,需将结果进行降序排序,具体字段名和样例见表4。

result4.csv:根据履约率最高的模型,提供招聘岗位签约成功后的求职者ID。该结果需对招聘信息ID进行排序,并对每个招聘信息的数据按岗位匹配度降序排序,具体字段名和样例见表5。

2 问题一思路分析及python代码实现

(1)爬取招聘信息

import requests
import pandas as pd
import json

data = []

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}


def print_hi(page):
    。。。略,请下载完整代码
    response = requests.get(url, headers=headers)
    html = json.loads(response.text)
    for i in html["data"]["content"]:
        item = {'招聘信息id': i["id"], '公司地址': i["enterpriseAddress"]["detailedAddress"].replace('\xa0', ''),
                '招聘岗位': i["positionName"], '公司类型': i["enterpriseExtInfo"]["personScope"],
                '最低薪资': i["minimumWage"], '最高薪资': i["maximumWage"],
                '员工数量': i["enterpriseExtInfo"]["econKind"], '学历': i["educationalRequirements"],
                '岗位经验': i["exp"], '企业名称': i["enterpriseExtInfo"]["shortName"],
                '企业类型': i["enterpriseExtInfo"]["industry"]}
        print(item)
        data.append(item)


def main():
    for j in range(1, 159):
        print_hi(page=j)
    df = pd.DataFrame(data)
    。。。略
    


# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    main()


(2)爬取人才信息

import requests
import pandas as pd
import json

data = []

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
}


def print_hi(page):
   。。。略,请下载完整代码
    response = requests.get(url, headers=headers)
    html = json.loads(response.text)
    for i in html["data"]["content"]:
        item = {'求职者id': i["id"], '姓名': i["username"],
                '预期岗位': i["expectPosition"], '预期最低薪资': i["willSalaryStart"],
                '预期最高薪资': i["willSalaryEnd"],
                '地区': i["city"]}
        ite = []
        for j in i["keywordList"]:
            ite.append(j['labelName'])
        item['技能'] = ite
        print(item)
        data.append(item)


def main():
    for j in range(1, 1093):
        print_hi(page=j)
    df = pd.DataFrame(data)
    。。。略


# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
    main()


3 下载后的数据及代码


(1)招聘信息
有1575个样本

(2)人才信息
有10916个样本

有关【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题一的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

  3. ruby-on-rails - 建模收藏夹 - 2

    我希望将Favorite模型添加到我的User和Link模型。业务逻辑用户可以有多个链接(即可以添加多个链接)用户可以收藏多个链接(他们自己的或其他用户的)一个链接可以被多个用户收藏,但只有一个所有者我对如何为这种关联建模以及在模型就位后如何创建用户收藏夹感到困惑?classUser 最佳答案 下面的数据模型怎么样:classUser:destroyhas_many:favorite_links,:through=>:favorites,:source=>:linkendclassLink:destroyhas_many:favor

  4. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  5. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  6. ruby - 安装 Ruby 时遇到问题(无法下载资源 "readline--patch") - 2

    当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub

  7. java - 从 JRuby 调用 Java 类的问题 - 2

    我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www

  8. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  9. ruby-on-rails - Rails 中的推荐引擎 - 2

    我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph

  10. ruby - 在 Ruby 中构建长字符串的简洁方法 - 2

    在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo

随机推荐