関連リンク
完全なコードのダウンロードについては、画像の情報を参照してください
1 件のトピック
【2023年 第11回 テディカップ データマイニングチャレンジ】 C-question Teddy 社内プロモーションプラットフォーム 採用・就職双方向レコメンドシステム構築 モデリングとpythonコード詳細解説 問題1を見る
2 問題 3 求職者満足度とマッチング度のモデル構築
採用・就職活動の過程で、質の高い求職者が多数現れると、企業は求職者の能力要件や熟練度などを考慮し、さまざまな採用情報から自分の心にあったポジションを選択します。そのため、求職者の満足度指数は、企業の採用ポジションに対する求職者の満足度を客観的に反映することができます。最低求人要件を満たしていない求職者の場合、企業は求人マッチング度を 0 と定義できます。同様に、求職者は、求職者の最低要件を満たさないポジションについて、求職者満足度を 0 と定義できます。
設問 2 の募集情報と求職者情報をもとに、求人情報ごとにマッチング度と求職者満足度のモデルを構築し、このモデルに基づいて求人情報ごとにマッチング度がゼロでない求職者を提示し、その結果を算出する。を降順にソートして「result3-1.csv」ファイルに格納し、求職者満足度ゼロでない求人情報を各求職者に提供し、結果を降順にソートして「result3-2.csv」ファイルに格納するファイル。(テンプレートファイルは別添1のCSVファイル参照)
3 思考分析
モデリングスキーム
求職者満足度と求職者満足度のモデルを構築するには、まずresult1-1.csvとresult1-2.csvのデータを整理・加工し、各求人情報に対応する求職マッチング度を算出し、各求職者対応の求職者満足度。
- result1-1.csv を消去して処理します。
- 重複する募集情報 ID を削除します。
- null または意味のないデータを削除または置換します。
- 従業員数、学歴、職歴などの機密データをデジタル処理して、その後の計算を容易にします。
- result1-2.csv を消去して処理します。
- 重複する求職者 ID を削除します。
- null または意味のないデータを削除または置換します。
- キーワード抽出と単語分割は、その後の計算を容易にするために、予想されるポジションとスキルに対して実行されます。
- ジョブマッチング度の計算:
- 採用情報ごとに、期待されるポジションやスキルに応じて採用応募者を選別し、適格な採用応募者を選別します。
- 資格のある求職者ごとに、求人情報とのジョブ マッチング度を計算します。これは、スキル マッチング度やジョブ マッチング度などの指標を使用して計算できます。
- 各求人情報について、すべての有資格求職者の求人適合度を合計し、その求人情報の総合求人適合度を求める。
- 求職者の満足度を計算します。
- 求職者ごとに、資格、職歴、その他の条件に応じて求人情報を選別し、資格のある求人情報を選別します。
- 適格な求人情報ごとに、求職者に対する求職者の満足度を計算します。これは、給与、会社の種類、勤務地などの指標を使用して計算できます。
- 求職者ごとに、資格のあるすべての求人情報の求職者満足度を合計して、求職者の総合求職者満足度を取得します。
- 算出した求人適合度と求職者満足度により、求人適合度でソートしてresult3-1.csv、求職満足度でソートしてresult3-2.csvとする。
4 コードの実装
4.1 仕事のマッチング度
import pandas as pd
import numpy as np
# 读取招聘信息和求职者信息
job_info = pd.read_csv('data/result1-1.csv')
job_seekers = pd.read_csv('data/result1-2.csv')
# 将招聘信息和求职者信息合并,使用交叉连接的方式
job_matching = pd.merge(job_info.assign(key=1), job_seekers.assign(key=1), on='key').drop('key', axis=1)
# 定义计算匹配度函数
def calculate_match(row):
# 判断学历匹配度,如果不符合则匹配度为0
。。。略,请下载完整代码
# 判断岗位是否匹配,如果有一个岗位匹配则匹配度为1,否则为0
。。。略,请下载完整代码
return 0
# 计算岗位匹配度
job_matching['匹配度'] = 。。。略,请下载完整代码
# 根据匹配度降序排序
job_matching = job_matching.sort_values(by='匹配度', ascending=False)
# 保存结果
job_matching[['招聘信息id', '求职者id', '匹配度']].to_csv('data/result3-1.csv', index=False)
4.2 求職者満足度
from ast import literal_eval
# 读取招聘信息和求职者信息
job_info = pd.read_csv('data/result1-1.csv')
job_seekers = pd.read_csv('data/result1-2.csv')
# 使用literal_eval()函数将字符串转换为列表
job_seekers['预期岗位'] = job_seekers['预期岗位'].apply(literal_eval)
# 使用explode()函数将列表中的元素分解成单独的行
job_seekers_all = job_seekers.explode('预期岗位')
# 将招聘信息和求职者信息合并,使用左连接的方式
。。。略,请下载完整代码
# 求四列数据的最大值
max_value = max(job_satisfaction[['最低薪资','最高薪资','预期最低薪资','预期最高薪资']].max())
# 求四列数据的最小值
min_value = min(job_satisfaction[['最低薪资','最高薪资','预期最低薪资','预期最高薪资']].min())
# 将薪资归一化
def min_max_normalize(x):
if min_value == max_value:
return x
return (x - min_value) / (max_value - min_value)
job_satisfaction['最低薪资'] = job_satisfaction['最低薪资'].apply(min_max_normalize)
job_satisfaction['最高薪资'] = job_satisfaction['最高薪资'].apply(min_max_normalize)
job_satisfaction['预期最低薪资'] = job_satisfaction['预期最低薪资'].apply(min_max_normalize)
job_satisfaction['预期最高薪资'] = job_satisfaction['预期最高薪资'].apply(min_max_normalize)
# 对于求职者满意度的计算,可以采用类似的方法,将招聘信息和求职者信息合并后,按照求职者的要求和条件进行筛选和计算匹配度。以下是一个基于pandas库的求职者满意度计算方案:
# 定义计算满意度函数
def calculate_satisfaction(row):
# 判断薪资是否满意,如果不满意则满意度为0
。。。略,请下载完整代码
# 计算专业技能匹配度
。。。略,请下载完整代码
# 计算工作经验匹配度
。。。略,请下载完整代码
# 计算学历匹配度
。。。略,请下载完整代码
# 还有地区距离满意度
。。。略,请下载完整代码
# 权重自己定
# total_satisfaction = 0.4 * salary_satisfaction + 0.2 * skill_satisfaction + 0.2 * exp_satisfaction + 0.2 * edu_satisfaction
return total_satisfaction
# 计算满意度
job_satisfaction['满意度'] = job_satisfaction.apply(calculate_satisfaction, axis=1)
# 根据满意度降序排序
job_satisfaction = job_satisfaction.sort_values(by='满意度', ascending=False)
# 保存结果
job_satisfaction[['招聘信息id', '求职者id', '满意度']].to_csv('data/result3-2.csv', index=False)