修改技能提取方案
This commit is contained in:
@@ -244,11 +244,11 @@ offerpie/back-end
|
||||
### 整体架构
|
||||
- **触发时机**:用户访问岗位列表接口(支持筛选条件:地区/岗位类型/行业/工作类型)
|
||||
- **核心流程**:扩展层级筛选 → 查询不感兴趣记录 → 扩展排除列表 → SQL分页查询 → 查询收藏状态 → 批量计算匹配度 → 组装返回
|
||||
- **匹配度计算**:教育30% + 经历40% + 技能30%,在Java层批量计算
|
||||
- **匹配度计算**:教育30% + 经历30% + 技能40%,在Java层批量计算
|
||||
|
||||
### 匹配度计算规则
|
||||
|
||||
总分公式:`MatchScore = Sedu × 30% + Sexp × 40% + Sskill × 30%`
|
||||
总分公式:`MatchScore = Sedu × 30% + Sexp × 30% + Sskill × 40%`
|
||||
|
||||
#### 教育维度(Sedu)
|
||||
- 学校等级分(Srank):1→100, 2→80, 3→60, 4→40
|
||||
|
||||
@@ -71,8 +71,8 @@ public class JobMatchService {
|
||||
int experienceScore = calculateExperienceScore(profile);
|
||||
int skillScore = calculateSkillScore(jobSkillMap.get(job.getId()), userSkillTagSet);
|
||||
|
||||
// 加权计算总分:教育30% + 经历40% + 技能30%
|
||||
int totalScore = (int) Math.round(educationScore * 0.3 + experienceScore * 0.4 + skillScore * 0.3);
|
||||
// 加权计算总分:教育30% + 经历30% + 技能40%
|
||||
int totalScore = (int) Math.round(educationScore * 0.3 + experienceScore * 0.3 + skillScore * 0.4);
|
||||
|
||||
Map<String, Integer> map = new HashMap<>();
|
||||
map.put("educationScore", educationScore);
|
||||
|
||||
@@ -224,7 +224,7 @@ public class UserProfileAnalyzeService {
|
||||
*/
|
||||
private void extractSkillTags(Long userId, String profileJson) {
|
||||
String systemPrompt = """
|
||||
你是一个技能提取助手。根据用户简历,提取该用户具备的核心专业能力和工具技能。
|
||||
你是一个技能提取助手。根据用户简历,提取该用户具备的核心专业能力和工具技能,并扩散推断隐含技能。
|
||||
返回JSON数组格式,如:["java", "spring boot", "mysql", "redis"]
|
||||
规则:
|
||||
1. 统一使用小写字母
|
||||
@@ -233,18 +233,19 @@ public class UserProfileAnalyzeService {
|
||||
4. 提取范围包括:技术栈、专业领域知识、行业工具、专业资质能力等
|
||||
5. 不提取纯软技能(如沟通能力、团队协作、学习能力、积极主动)
|
||||
6. 不提取过于宽泛的标签(如"办公软件"、"windows")
|
||||
7. 如果简历中完全没有专业能力体现,返回空数组 []
|
||||
8. 最多15个,按熟练度排序
|
||||
9. 只返回JSON数组,不要其他内容
|
||||
示例1(技术岗):
|
||||
输入:3年Java开发经验,熟悉Spring Boot、MySQL、Redis,会PLC编程
|
||||
输出:["java", "spring boot", "mysql", "redis", "plc"]
|
||||
示例2(财务岗):
|
||||
输入:负责费用管理与审核,月度经营利润分析,会计学专业
|
||||
输出:["财务管理", "会计", "经营分析"]
|
||||
示例3(制造岗):
|
||||
输入:从事模具开发,熟悉CAD制图,了解注塑成型工艺
|
||||
输出:["模具", "cad", "注塑"]
|
||||
7. 扩散提取:除了简历中明确提到的技能,还要推断隐含的基础技能(如提到"spring boot"→补充"java";提到"mybatis"→补充"sql";提到"react"→补充"js")
|
||||
8. 如果简历中完全没有专业能力体现,返回空数组 []
|
||||
9. 最多25个,按熟练度排序
|
||||
10. 只返回JSON数组,不要其他内容
|
||||
示例1(技术岗,扩散提取):
|
||||
输入:3年Spring Boot开发经验,熟悉MyBatis、Redis
|
||||
输出:["spring boot", "java", "mybatis", "redis", "sql", "maven", "git"]
|
||||
示例2(财务岗,扩散提取):
|
||||
输入:负责费用管理与审核,会计学专业,熟练使用SAP
|
||||
输出:["会计", "财务管理", "sap", "excel", "审计"]
|
||||
示例3(制造岗,扩散提取):
|
||||
输入:从事模具开发,熟悉SolidWorks三维建模
|
||||
输出:["模具", "solidworks", "cad", "机械设计"]
|
||||
示例4(无专业能力):
|
||||
输入:具备较强的沟通能力和创新意识,积极主动
|
||||
输出:[]
|
||||
|
||||
Reference in New Issue
Block a user