邬嘉文:AI求职助手
作者:邬嘉文 AI求职助手
问题痛点
国内招聘网站都很难用。以猎聘为例
- 搜索15个关键字列出8000个职位。
- 假设浏览每个职位每次1分钟,用户需要3个月才看完。
- 看完后也不清楚自己胜任力和发展方向。
搜索15个关键字 |
职位数量 |
展示 |
8000 |
去重后 |
4000 |
筛选后(如剔除技术研发) |
2000 |
GPT4推荐 |
600 |
|
详情 |
展示职位 |
8000个 |
单个职位浏览时间 |
1分钟 |
单个职位浏览次数 |
2次 |
总浏览时间 |
16000分钟 |
每天浏览时间 |
240分钟 |
每周浏览工作日 |
4天 |
查看全部岗位耗时 |
3~4个月 |
解决方案
通过GPT4了解自己的发展方向,通过DGE算法匹配相似岗位。
市场现状
信息收集
- 在猎聘网上搜索15个感兴趣的关键词,通过instant data scraper收集职位信息。
- 通过Python selenium库对URL逐一爬虫,收集招聘要求信息。
行情分析
- AI产品经理需求大,曾经XR,虚拟人等产品岗位遇冷。
- AI岗位集中在北京和上海,留在广州没太大机会。
个人定位
算法选型
- GPT算法有更强语义理解能力。
- 每个词由很长的上下文(context windows)及不同权重来定义。
- GPT语义能力能分辨什么是核心技能,什么是初略了解。
技能识别
- 将简历和10个岗位通过API发送给ChatGPT4,让它推荐其中3个岗位。
- LLM有Context Length限制。单次请求过长的文本,推理能力会下降。所有每次请求10个岗位。
- Moonshot推理能力也是不错的,但是json返回格式还没做,故用GPT4。
- 2000个岗位经过GPT筛选后,分为600个推荐岗位和1400个潜在岗位。再通过ChatGPT4对每个岗位招聘要求抽取技能(skill NER)。
- 找出推荐岗位和潜在岗位的技能差异,找出自己优劣势。
个人画像
- 创新类产品经理
- 非核心优势:技术、销售、数据、管理
核心技能 |
非核心技能 |
产品设计与开发:
人工智能与技术:
市场与用户研究:
沟通与协作:
分析工具与方法:
创新与思维:
|
技术与开发:
数据分析与人工智能:
市场营销与销售:
管理与沟通:
|
人岗匹配
算法选型
人岗匹配(Person-Job Fit)是一个经典匹配算法问题。主流计算方法:
匹配方式 |
实现过程 |
缺陷 |
基于岗位文本和简历文本匹配 |
|
|
基于点击行为匹配 |
|
|
基于文本和点击行为的混合匹配 |
|
|
这里我们选择基于文本相似性排序推荐。不同的是,利用最新的BGE模型,从向量空间来计算相似性,建立一个可用的Baseline。若需要工程化调优,再考虑NER,知识图谱,多路召回等策略。
相似性计算
- 使用DGE-M3模型,对简历和岗位做相似性匹配。
- 算法推荐的岗位,红字是一些关键匹配点。
- 算法不太推荐的岗位,蓝字是一些关键匹配点。
Python代码
import pandas as pd from FlagEmbedding import BGEM3FlagModel
1. 读取cv.txt文件 with open('cv.txt', 'r', encoding='utf-8') as file: cv_content = file.read()
2. 读取JobDetails2.xlsx文件所有字段 job_details = pd.read_excel('JobDetails2.xlsx')
3. 使用BGE-M3模型计算相似性 model = BGEM3FlagModel('BAAI/bge-m3', use_fp16=True) cv_embedding = model.encode([cv_content], batch_size=1, max_length=8192)['dense_vecs']
计算cv与每个job_description的相似性 similarities = [] for job_description in job_details['job_description']: job_embedding = model.encode([job_description])['dense_vecs'] similarity = cv_embedding @ job_embedding.T similarities.append(similarity.item())
4. 将所有信息汇总保存为123.xlsx job_details['similarity'] = similarities job_details.to_excel('123.xlsx', index=False) |
岗位投递
- Github上有一个自动投简历的程序。它是利用招聘网站原生推荐流,算是比较准的。
- 但自己不想这样乱投简历。根据上面的职业定位和推荐排序,可以3天内看完2000个岗位。