diff --git a/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java b/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java index 80737cc..5ea3e9a 100644 --- a/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java +++ b/manager/src/main/java/org/jiayunet/service/UserProfileAnalyzeService.java @@ -243,28 +243,30 @@ public class UserProfileAnalyzeService { */ private void extractSkillTags(Long userId, String profileJson) { String systemPrompt = """ - 你是一个技能提取助手。根据用户简历,提取该用户具备的核心专业能力和工具技能,并扩散推断隐含技能。 + 你是一个技能提取助手。根据用户简历,尽可能全面地提取该用户具备的专业能力和工具技能,并广泛扩散推断隐含技能,让技能覆盖面尽量宽。 返回JSON数组格式,如:["java", "spring boot", "mysql", "redis"] 规则: - 1. 统一使用小写字母 + 1. 统一使用小写字母;语言约定:领域概念、学科方向、专业能力用中文(如"机器学习"、"深度学习"、"自然语言处理"、"计算机视觉"、"强化学习"、"图神经网络"、"会计"、"模具"),具体的编程语言/框架/库/工具/软件/模型名用其通用英文名(如python、pytorch、tensorflow、transformer、ros、sql、excel) 2. 只保留核心词,去掉多余修饰(如"plc编程"→"plc","c语言"→"c","cad制图"→"cad") - 3. 同一技能只保留最具体的表述,不要同时出现上位词和下位词(如有"机械设计"就不要再出"机械") - 4. 提取范围包括:技术栈、专业领域知识、行业工具、专业资质能力等 - 5. 不提取纯软技能(如沟通能力、团队协作、学习能力、积极主动) - 6. 不提取过于宽泛的标签(如"办公软件"、"windows") - 7. 扩散提取:除了简历中明确提到的技能,还要推断隐含的基础技能(如提到"spring boot"→补充"java";提到"mybatis"→补充"sql";提到"react"→补充"js") - 8. 如果简历中完全没有专业能力体现,返回空数组 [] - 9. 按熟练度排序 - 10. 只返回JSON数组,不要其他内容 - 示例1(技术岗,扩散提取): + 3. 归一到常用统一粒度:同一技能只保留一个最通用常见的表述(如"模具设计"统一为"模具","前端开发"统一为"前端",不要同时出现"机械设计"和"机械") + 4. 优先使用具体工具/技术名,不要用抽象概念词(如用"kafka"不用"消息队列",用"redis"不用"缓存",用"mysql"不用"数据库") + 5. 提取范围要广:编程语言、框架、工具、技术栈、专业领域知识、行业工具、专业资质、掌握的方法/算法/模型等;课程和项目只提炼其体现的通用技能,绝不要把课程名或项目名本身当作技能 + 6. 严格过滤噪声,以下一律不要提取:纯软技能(沟通、协作、学习能力、积极主动)、课程名(如"高等数学"、"线性代数"、"离散数学"、"概率论"、"操作系统"、"计算机网络"、"软件工程"、"数据结构与算法")、项目/产品专名(如"微信小程序开发"、"多人游戏聊天网页"、"seir模型"、"疫情大数据追踪预测"、"动量交易策略"、"市场回溯测试")、数据集或内部代号(如"casf2016"、"pdbbind"、"molclr"、"pignet"、"vina"、"smiles")、过于宽泛的标签(如"办公软件"、"windows"、"数据分析") + 7. 广泛扩散:不仅提取简历明确写出的技能,还要充分推断隐含的相关技能——由专业推断该专业核心技能、由项目/经历推断其涉及的完整技术栈、由某技能推断其上下游常用技能(如"spring boot"→补"java/sql/maven/git";"机器学习"→补"python/深度学习";"运筹学"→补"优化/概率论/线性代数/python") + 8. 把具体任务/工作内容归到通用能力词,不要停在具体任务名:如"图像识别/目标检测/图像分割/目标跟踪/图像处理/图像分类"→归为"计算机视觉";"文本分类/分词/命名实体识别/机器翻译"→归为"自然语言处理";"模型训练/模型调优/网络设计"→归为"深度学习" + 9. 尤其要补全常见、通用、主流的基础技能,宁多勿漏,让覆盖面尽量宽 + 10. 如果简历中完全没有专业能力体现,返回空数组 [] + 11. 最多提取30个,按熟练度排序 + 12. 只返回JSON数组,不要其他内容 + 示例1(技术岗,广泛扩散): 输入:3年Spring Boot开发经验,熟悉MyBatis、Redis - 输出:["spring boot", "java", "mybatis", "redis", "sql", "maven", "git"] - 示例2(财务岗,扩散提取): + 输出:["spring boot", "java", "mybatis", "redis", "sql", "maven", "git", "mysql", "spring", "linux"] + 示例2(财务岗,广泛扩散): 输入:负责费用管理与审核,会计学专业,熟练使用SAP - 输出:["会计", "财务管理", "sap", "excel", "审计"] - 示例3(制造岗,扩散提取): + 输出:["会计", "财务管理", "sap", "excel", "审计", "成本核算", "财务分析"] + 示例3(制造岗,广泛扩散): 输入:从事模具开发,熟悉SolidWorks三维建模 - 输出:["模具", "solidworks", "cad", "机械设计"] + 输出:["模具", "solidworks", "cad", "机械设计", "机械制图", "三维建模"] 示例4(无专业能力): 输入:具备较强的沟通能力和创新意识,积极主动 输出:[]