简历解析步骤(第二步)技术与实现(8)政治面貌、语言能力、 英语水平、 计算机水平
原创
©著作权归作者所有:来自51CTO博客作者z盗理者的原创作品,请联系作者获取转载授权,否则将追究法律责任
简历解析步骤(第二步)技术与实现(8)政治面貌、语言能力、 英语水平、 计算机水平
继上篇文章理论:
简历解析,常见接收到的简历是图片或文档的方式,我们需要先将简历中的文字提取出来,然后再对文字进行算法分析以及AI训练,从而实现解析简历与提高解析度的效果。
先介绍我们整个解析过程和训练过程需要用到的技术:
- 文字识别:OCR服务(百度 AI 开放平台:通用文字识别)
- 算法(伪代码:不限语言)
- AI 机器学习 (ML.NET 或者 Python 一些算法库)
步骤: 第一步:通过文字识别的方式,提取出里面所有有价值的内容(可以转换的所有信息:因为本次讲解都是中文,所以接下来都以解析中文简历来作为例子)第二步:通过算法进行识别,找到符合要求的信息如:姓名、性别、年龄、学历、工作经历等。第三步:将识别出来的信息进行本地存储,然后通过人工去纠正错误,将该版本作为样板,交由机器学习算法进行学习运算,计算出模型。第四步:将得出来的模型再识别简历达到一定的量,再纠错,再交由机器学习算法进行学习运算,反复学习,直至通过率接近 100%。
步骤实现:
第一步:识文字,取信息
细节可以参考上一篇文章
第二步:识文字,做分类
我们通过百度云读取出来的文字信息,是一个区域一个区域的字符串。这个时候,我们要将这些字符串做一些分类:基本信息(38项)
#1. 姓名 2. 姓氏 3. 性别 4. 年龄 5. 身高 6. 体重 7. 婚姻状态 8. 出生日期 9. 户口地址 10. 籍贯地址 11. 身份证号 12. 民族 13. 国籍 14. 政治面貌 15. 语言能力 16. 英语水平 17. 计算机水平
政治面貌分类:(核心代码如下)配合识别出来的文字使用
政治面貌大概有下面这几种情况:
中共党员、中共预备党员、共青团员、民革党员、民盟盟员、民建会员、民进会员、农工党党员、致公党党员、九三学社社员、台盟盟员、无党派人士以及群众
/// <summary>
/// 验证政治面貌
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationPoliticalOutlook(string words)
{
//获取所有政治面貌信息:
string allPoliticalOutlook = "中共党员、中共预备党员、共青团员、民革党员、民盟盟员、民建会员、民进会员、农工党党员、致公党党员、九三学社社员、台盟盟员、无党派人士、群众";
List<string> allPoliticalOutlooks = allPoliticalOutlook.Split(new string[] { "、" }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> resultInfo = new List<string>();
// 情况:政治面貌:X,这种半格式文本情况下,基本可以百分百确定“:”后面是政治面貌
if (words.Contains("政治面貌"))
resultInfo.Add(words);
foreach (var item in allPoliticalOutlooks)
if (item.Length <= 10)
if (words.Contains(item))
resultInfo.Add(words);
return resultInfo;
}
语言能力分类:(核心代码如下)配合识别出来的文字使用
/// <summary>
/// 验证语言能力
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationLanguageAbility(string words)
{
//常用语言信息:
string allPoliticalOutlook = "英语、汉语、德语、法语、俄语、西班牙语、日语、阿拉伯语、韩语、朝鲜语、葡萄牙语、英文、中文、德文、法文、俄文、西班牙文、日文、阿拉伯文、韩文、朝鲜文、葡萄牙文、文言文";
List<string> allPoliticalOutlooks = allPoliticalOutlook.Split(new string[] { "、" }, StringSplitOptions.RemoveEmptyEntries).ToList();
List<string> resultInfo = new List<string>();
// 情况:语言:X,这种半格式文本情况下,基本可以百分百确定“:”后面是语言
if (words.Contains("语言"))
if (words.Contains(":"))
resultInfo.Add(words);
foreach (var item in allPoliticalOutlooks)
if (item.Length <= 10)
if (words.Contains(item))
resultInfo.Add(words);
return resultInfo;
}
英语水平分类:(核心代码如下)配合识别出来的文字使用
/// <summary>
/// 验证英语水平
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationEnglishLevel(string words)
{
List<string> resultInfo = new List<string>();
// 情况:英语水平:X,这种半格式文本情况下,基本可以百分百确定“:”后面是英语水平
if (words.Contains("英语水平"))
resultInfo.Add(words);
if (words.Contains("英语"))
if (words.Contains("级"))
resultInfo.Add(words);
return resultInfo;
}
计算机水平分类:(核心代码如下)配合识别出来的文字使用
/// <summary>
/// 验证计算机水平
/// </summary>
/// <param name="words">内容</param>
/// <returns></returns>
static List<string> VerificationComputerLevel(string words)
{
List<string> resultInfo = new List<string>();
// 情况:计算机水平:X,这种半格式文本情况下,基本可以百分百确定“:”后面是计算机水平
if (words.Contains("计算机水平"))
resultInfo.Add(words);
if (words.Contains("计算机"))
if (words.Contains("级"))
resultInfo.Add(words);
return resultInfo;
}
要源码的,评论区留下邮箱,或者加qq群:546496965