简历解析步骤(第二步)技术与实现(6)识文字,做分类:婚姻状态 、出生日期 、 户口地址 、 籍贯地址

112 阅读4分钟

简历解析步骤(第二步)技术与实现(6)识文字,做分类:婚姻状态 、出生日期 、 户口地址 、 籍贯地址

继上篇文章理论:

简历解析,常见接收到的简历是图片或文档的方式,我们需要先将简历中的文字提取出来,然后再对文字进行算法分析以及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. 所处行业 25. 在职状态 26. 当前薪资 27. 工作地点 28. 工作性质(全职、兼职、实习) 29. 有否海外留学经历 30. 有否海外工作经历 31. 毕业时间 32. 毕业学校 33. 毕业学校类型 34. 所学专业 35. 学历 36. 是否统招

婚姻状态分类:(核心代码如下)配合识别出来的文字使用

/// <summary>
///     验证婚姻状态
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationMaritalStatus(string words)
{
    List<string> resultInfo = new List<string>(); ;
    //有关婚姻状况的直接 [ 已婚 、 未婚 ] 判断做分类
    if (words.Contains("已婚"))
        resultInfo.Add(words);
    if (words.Contains("未婚"))
        resultInfo.Add(words);
    return resultInfo;
}

出生日期分类:(核心代码如下)配合识别出来的文字使用

/// <summary>
///     验证出生日期
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationBirthday(string words)
{
    List<string> resultInfo = new List<string>();
    if (words.Contains("出生日期"))
        resultInfo.Add(words);
    if (words.Contains("出生年月"))
        resultInfo.Add(words);
    if (words.Contains("生日"))
        resultInfo.Add(words);
    // 搜索这种格式 1990-03-08  1990/03/08   2000-03-08  2000/03/08
    if (words.IndexOf("/") >= 2 || words.IndexOf("-") >= 2)
        if (words.Contains("19") || words.Contains("20"))
            resultInfo.Add(words);
    return resultInfo;
}

户口地址分类:(核心代码如下)配合识别出来的文字使用

/// <summary>
///     验证户口地址
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationHometownAddress(string words)
{
    //获取所有省份信息:
    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 > 10)
        {
            if (words.Contains(item))
                resultInfo.Add(words);
        }
    }
    return resultInfo;
}

籍贯地址分类:(核心代码如下)配合识别出来的文字使用

/// <summary>
///     验证籍贯地址
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationHometownShortAddress(string words)
{
    //获取所有省份信息:
    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 <= 10)
        {
            if (words.Contains(item))
                resultInfo.Add(words);
        }
    }
    return resultInfo;
}

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