简历解析步骤(第二步)技术与实现(10)身体状况 、 专业 、毕业院校 、 爱好特长 、 薪资要求

358 阅读3分钟

简历解析步骤(第二步)技术与实现(10)身体状况 、 专业 、毕业院校 、 爱好特长 、 薪资要求

继上篇文章理论:

简历解析,常见接收到的简历是图片或文档的方式,我们需要先将简历中的文字提取出来,然后再对文字进行算法分析以及AI训练,从而实现解析简历与提高解析度的效果。

先介绍我们整个解析过程和训练过程需要用到的技术:

  1. 文字识别:OCR服务(百度 AI 开放平台:通用文字识别)
  2. 算法(伪代码:不限语言)
  3. AI 机器学习 (ML.NET 或者 Python 一些算法库)

步骤: 第一步:通过文字识别的方式,提取出里面所有有价值的内容(可以转换的所有信息:因为本次讲解都是中文,所以接下来都以解析中文简历来作为例子)第二步:通过算法进行识别,找到符合要求的信息如:姓名、性别、年龄、学历、工作经历等。第三步:将识别出来的信息进行本地存储,然后通过人工去纠正错误,将该版本作为样板,交由机器学习算法进行学习运算,计算出模型。第四步:将得出来的模型再识别简历达到一定的量,再纠错,再交由机器学习算法进行学习运算,反复学习,直至通过率接近 100%。

步骤实现:

第一步:识文字,取信息

细节可以参考上一篇文章

第二步:识文字,做分类

我们通过百度云读取出来的文字信息,是一个区域一个区域的字符串。这个时候,我们要将这些字符串做一些分类:基本信息(38项)

#1. 姓名 2. 姓氏 3. 性别 4. 年龄 5. 身高 6. 体重 7. 婚姻状态 8. 出生日期 9. 户口地址 10. 籍贯地址 11. 身份证号 12. 民族 13. 国籍 14. 政治面貌 15. 语言能力 16. 英语水平 17. 计算机水平 18. 博客/主页地址 19. 身体状况 20. 专业 21. 毕业院校 22. 爱好特长 23. 薪资要求 24. qq 25. 邮箱 26. 联系电话

身体状况

/// <summary>
///     验证身体状况
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
public List<string> VerificationPhysicalCondition(string words, int currindex = -1)
{
    //获取所有健康信息:
    string allA = "健康、良好、一般、较差";
    List<string> allss = allA.Split(new string[] { "、" }, StringSplitOptions.RemoveEmptyEntries).ToList();


    List<string> resultInfo = new List<string>();
    foreach (var item in allss)
    {
        if (item.Length < 8)
        {
            if (words.Contains(item))
                resultInfo.Add(words);
        }
    }
    if (words.Contains("健康状况") || words.Contains("身体状况"))
        resultInfo.Add(words);
    return resultInfo;
}

专业

/// <summary>
///     验证专业
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
public List<string> VerificationMajor(string words, int currindex = -1)
{

    List<string> resultInfo = new List<string>();
    if (words.Contains("专业"))
    {
        var word01 = NextWord(currindex);
        resultInfo.Add(word01);
    }

    if (words.Contains("专业:"))
        resultInfo.Add(words);
    if (words.Contains("专业:"))
        resultInfo.Add(words);
    return resultInfo;
}

毕业院校

/// <summary>
///     验证毕业院校
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
public List<string> VerificationGraduationSchool(string words, int currindex = -1)
{

    List<string> resultInfo = new List<string>();
    if (words.Contains("毕业院校"))
    {
        var word01 = NextWord(currindex);
        resultInfo.Add(word01);
    }

    if (words.Contains("毕业院校:"))
        resultInfo.Add(words);
    if (words.Contains("毕业院校:"))
        resultInfo.Add(words);
    return resultInfo;
}

爱好特长

/// <summary>
///     验证爱好特长
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
public List<string> VerificationHobbiesSpecialties(string words, int currindex = -1)
{

    List<string> resultInfo = new List<string>();
    if (words.Contains("爱好"))
    {
        var word01 = NextWord(currindex);
        resultInfo.Add(word01);
    }

    if (words.Contains("爱好:"))
        resultInfo.Add(words);
    if (words.Contains("特长:"))
        resultInfo.Add(words);
    if (words.Contains("爱好:"))
        resultInfo.Add(words);
    if (words.Contains("特长:"))
        resultInfo.Add(words);
    return resultInfo;
}

薪资要求

/// <summary>
///     验证薪资要求
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
public List<string> VerificationSalaryRequirements(string words, int currindex = -1)
{

    List<string> resultInfo = new List<string>();
    if (words.Contains("薪资要求"))
    {
        var word01 = NextWord(currindex);
        resultInfo.Add(word01);
    }

    if (words.Contains("薪资要求:"))
        resultInfo.Add(words);
    if (words.Contains("薪资要求:"))
        resultInfo.Add(words);
    return resultInfo;
}

工具


private string NextWord(int currindex)
{
    var we = "";
    if (currindex > 0)
    {
        if (jArrayORCResultall.Count() - 1 != currindex)
        {
            we = jArrayORCResultall[currindex + 1].words;
        }
    }

    return we;
}

要源码的,评论区留下邮箱,或者加qq群:546496965