捡漏拿奖赛事(目前拿奖率90%):科大讯飞人岗匹配赛题

共 5977字,需浏览 12分钟

 ·

2023-09-01 03:04

 Datawhale干货 

方向:自然语言处理,科大讯飞赛事

  • 赛题名称:人岗匹配挑战赛2023
  • 赛题类型:自然语言处理
  • 捡漏赛题:9月5号截止,目前提交人数11人,拿奖率90%
  • 赛题链接👇:

https://challenge.xfyun.cn/topic/info?type=person-post-matching-2023&ch=vWxQGFU

赛题背景

讯飞智聘是一款面向企业招聘全流程的智能化解决方案。运用科大讯飞先进的智能语音、自然语言理解、计算机视觉等AI技术及大数据能力,具备业界领先的简历解析、人岗匹配、AI面试、AI外呼等产品功能,助力企业提升招聘效率,降低招聘成本。

人岗匹配是企业招聘面临一个重大挑战,尤其在校园招聘等集中招聘的场景下,面对海量的简历,如何快速分类筛选出最适合招聘岗位的简历,以及在内推和猎头场景下,如何为一份简历找到合适的岗位,做到人适其岗、岗适其人,提升人岗匹配的效率和准确度,是困扰每一个HR和面试官的难题。

赛事任务

智能人岗匹配需要强大的数据作为支撑,本次大赛提供了大量的岗位JD和求职者简历的加密脱敏数据作为训练样本,参赛选手需基于提供的样本构建模型,预测简历与岗位匹配与否。

赛题数据集

本次比赛为参赛选手提供训练集与测试集,测试集不对外开放,仅用于提交时进行测试,选手在本地调试完算法模型后,提交算法代码至大赛平台,调用其中内含测试集进行测试。数据包含数据结构为:岗位JD数据包含4个特征字段:岗位ID, 岗位名称, 岗位介绍, 岗位要求

评价指标

本模型依据提交的结果文件,采用macro-F1 score进行评价。

赛题思路

本赛题提供训练集下载数据,选手在本地进行算法调试,在比赛页面提交模型进行在线推理。

赛题可以视为文本匹配的赛题,可以通过文本岗位与简历之间提取特征,然后构建模型进行训练。

import json
import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_predict

train_data = pd.read_json('./train.json')
train_data['解析结果'] = train_data['解析结果'].apply(lambda x : json.dumps(x).replace('"'' ').replace('"'' ').split())

test_data = pd.read_json('/work/data/personnel-matching-test-set/test.json')
test_data['解析结果'] = test_data['解析结果'].apply(lambda x : json.dumps(x).replace('"'' ').replace('"'' ').split())

joblist = pd.read_json('./job_list.json')
joblist['解析结果'] = joblist['岗位名称'] + ' ' + joblist['岗位介绍'] + ' ' + joblist['岗位要求']
joblist['解析结果'] = joblist['解析结果'].apply(lambda x : x.split())

train_feat = []
for row in train_data.iterrows():
    label = row[1]['岗位ID']
    query_text= row[1]['解析结果']
    feat = [
        label,
        len(query_text), len(set(query_text)), len(query_text) - len(set(query_text)),
    ]
    for target_text in joblist['解析结果']:
        feat += [
            len(set(query_text) & set(target_text)),
            len(set(query_text) & set(target_text)) / len(query_text),
            len(set(query_text) & set(target_text)) / len(target_text),
            
            len(set(query_text) & set(target_text)) / len(set(target_text)),
            len(set(query_text) & set(target_text)) / len(set(query_text))

        ]
    train_feat.append(feat)
train_feat = np.array(train_feat)
m = RandomForestClassifier()
m.fit(
    train_feat[:, 1:],
    train_feat[:, 0],
)

test_feat = []
for row in test_data.iterrows():
    query_text= row[1]['解析结果']
    feat = [
        len(query_text), len(set(query_text)), len(query_text) - len(set(query_text)),
    ]
    for target_text in joblist['解析结果']:
        feat += [
            len(set(query_text) & set(target_text)),
            len(set(query_text) & set(target_text)) / len(query_text),
            len(set(query_text) & set(target_text)) / len(target_text),
            
            len(set(query_text) & set(target_text)) / len(set(target_text)),
            len(set(query_text) & set(target_text)) / len(set(query_text))

        ]
    test_feat.append(feat)
test_feat = np.array(test_feat)
pd.DataFrame({
    '简历ID': range(len(test_data)),
    '岗位ID': m.predict(test_feat).astype(int)
}).to_csv('/work/output/result.csv', index=None)

本地目录如下:

person-post-matching-2023/
  run.py
  train.json    从比赛官网下载
  job_list.json   从比赛官网下载

打包提交过程

tar -cvzf person-post-matching-2023.tar.gz person-post-matching-2023/
s3cmd put person-post-matching-2023.tar.gz s3://ai-competition/你的url/

完整代码见👇:

https://github.com/datawhalechina/competition-baseline/tree/master/competition/%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9EAI%E5%BC%80%E5%8F%91%E8%80%85%E5%A4%A7%E8%B5%9B2023


一起“三连

浏览 2302
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报