You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从职位描述文本中提取包含工作年限要求的完整语句?

问题说明

开发职位描述解析器时,需要提取包含岗位所需工作年限要求的完整语句,原有正则实现仅能匹配到工作年限相关字段,无法返回对应完整语句。

  • 原有代码输出结果:['5-7 years']
  • 预期输出结果:['5-7 years of experience in journalism, communications, or content creation preferred']

原有错误实现代码如下:

def extract_years(self,resume_text):
 resume_text = str(resume_text.split('.'))
 exp=[]
 rx = re.compile(r"(\d+(?:-\d+)?\+?)\s*(years?)",re.I)

 for word in resume_text:
   exp_temp = rx.search(resume_text)

 if exp_temp:
   exp.append(exp_temp[0])
    
 exp = list(set(exp))
   
 return exp
原有代码问题点
  1. 文本拆分逻辑错误:resume_text.split('.') 会按句号将文本拆分为列表,直接用str()转换列表会把列表的括号、引号等符号带入文本,完全破坏原始语句结构
  2. 遍历逻辑无效:for word in resume_text 遍历的是错误转换后字符串的单个字符,且循环内每次都对完整错误文本做匹配,没有按独立语句遍历
  3. 匹配逻辑范围错误:正则仅捕获「数字+years」的字段片段,没有关联匹配字段所在的完整语句
调整后实现代码

核心思路是先按语句分隔符拆分原始文本为独立语句,再筛选包含工作年限规则的完整语句返回:

import re

def extract_years(self, resume_text):
    # 按句号、问号、感叹号、分号、换行符拆分独立语句,过滤空内容
    sentences = re.split(r'[.?!;]\s*|\n+', str(resume_text))
    sentences = [s.strip() for s in sentences if s.strip()]
    
    # 保留原有的工作年限匹配规则,兼容x年、x-y年、x+年等常见写法
    year_rule = re.compile(r"\d+(?:-\d+)?\+?\s*years?", re.I)
    
    result = []
    for sentence in sentences:
        # 语句包含年限匹配规则时,将完整语句加入结果
        if year_rule.search(sentence):
            result.append(sentence)
    
    # 去重后返回
    return list(set(result))
补充说明

如果测试过程中遇到Sr.、Mr.这类带点的缩写导致语句被错误拆分,可以根据实际职位描述的文本特征,提前预处理替换这类特殊缩写,或者优化语句分隔的正则规则排除这类场景即可。

内容的提问来源于stack exchange,提问作者SATYAMEDHAS PANDE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 23:51:20