版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。
https://blog.csdn.net/weixin_43453386/article/details/86605054
java——》解析简历
一、半格式化文本特征分析
具体流程:
1、 word 简历分块处理;
2、 每一块内容进行了分割处理
3、 文本分成两部分处理(基本信息和复杂信息);
4、 对处理的文本再进行一次回溯处理,找出第一次未能分析的内容;
5、 针对重点字段再解析
1、内容组织——》元
- 特点:
离散
具有独立完整意义的文本段 - 分割标志:
如回车、空格、冒号等等 或内容的(如标志性词语)
2、内容结构——》项
- 特点:
相对独立的
具有完整意义
绝大多数项都具有“标题+内容”的结构
3、项的内容——》分成两大类:基本项和复杂项
- 基本项:通常是“一个标题元+一个内容元”的形式(一对一)
- 复杂项:通常是“一个标题元+多个内容元”的形式(一对多)
4、简历分块
- 基本项:集中的区域里(文本首尾区域)
- 复杂项:集中分布一个区域内(如:工作经验)
5、文本内容标识性的强弱——》强标识、弱标识、无标识
- 强标识:大概率50%以上,如"姓名"
- 弱标识:可能属于多个类别或者不具有标识类别的效果
- 无标识:不具有标识其类别的特点,也不能通过上下文来判别其类别,通常来说是因为不含有任何必要关键字造成的
6、文本的组织顺序
- 策略:二级识别
- 做法:
第一级识别:每一条基本信息看作一个目标识别单元,复杂信息模块按整体看作一个目标识别单元
第二级识别:针对复杂信息模块,最终识别出所需要的全部子字段
二、简历分块算法
1、描述
- 1.明确强标识界限标志的模块,如:教育经历模块,工作经历模块、自我评价模块等等;
- 2.模块以正则表达式的形式存入字典,形成预设值;
- 3.通过匹配的方法,找出目标简历中相关的分割标志,得到预设值集合;
- 4.统计已知标志的特征信息,得到分割标志的一般特征向量;
- 5.计算每一段落的文本向量和特征向量的夹角;
- 6.当夹角小于阈值,我们认为该段落也是分割标志,反之,不是分割标志。
2、预计模块
教育经历、培训经历、工作经历、项目经历、自我评价、技能技巧、兴趣爱好、奖励。
3、算法实现
在大多数情况下结果集不为空,然后以集合中元素(符合条件的段落)为基础,统计如下参量[6]:字体大小、字体类别、粗体字数、斜体字数、首行缩进、段落平均长度。然后根据参量的重要性(我认为重要性依次递减)确定每个参量的权值,权值乘以统计值即是该参量对应的特征值,这样就得到一个长度为六的特征向量({字体大小、字体类别、粗体、斜体、首行缩进、段落平均长度});然后统计未识别段落的对应向量,计算两个向量的夹角,如果小于阈值(在本系统中为 15 度)的,则认为也是分块标志,否则反之。值得注意的是,对于包含表格的简历,认为表格是天然的分块标志,对每个单元格进行标准化,去掉我们不需要的字符(字母、数字、中文、回车、空格以外的字符),就得到分块结果。
4、特征向量构造及夹角
选择合适的参量(本系统中选取上述六个参量) —〉确定每个参量的权值—〉计算各个参量的统计值—〉统计值乘以权值得到特征向量
特征向量体现了分割标志的特点,计算夹角是判定未知文本与已知文本的相似性,当相似程度达到一定程度时,我们认为未知文本也是分割标志。
三、分割算法
1、描述
- 1、 规整输入文本,确定分割符;
- 2、 规整分割符;
- 3、 分割文本;
- 4、 修正分割结果
2、分割算法实现
1) 规整输入文本
对输入文本中的字符做处理,保留英文、数字、中文字符、标点符号(冒号除外),对于其他字符认为是元与元的分割标志。
- 一级分割符:回车、冒号、特殊符号(如星号等)
- 二级分割符号:空格
2) 二级分割符分类处理:
- 孤悬点处理:
- 孤悬点:如果一个汉字的前后都是空格,则该字符称为孤悬点
- 孤悬点作用:格式作用,如:“出 生 年 月”,孤悬点一律前向合并,合并为“出生年月”
- 英文之间的空格保留:英文之间、英文与数字之间、数字与数字之间、数字/英文与汉字之间的空格
3) 按照分割符号将原文本分成若干元,存入链表
4) 修正分割结果:
- 格式合并:
两个相邻的元都是长句(文本中有标点符号),且前一个元句末以非结束标点结束;
两个相邻的元后一个以标点符号开头;
两个长句元被一个二级分割符分开; - 内容合并与切割:正则表达式去匹配每一个元,以决定是否需要切割或合并,然后做相应的处理。
四、信息处理算法
1、描述
分割后——》识别元——》判断其特性(标题或者内容) 和类别
2、信息处理算法实现
1) 预处理
- 作用:区别基本信息 && 复杂信息
- 过程:字 段 设 计 正 则 表 达 式 库,按照分割后的文本顺序,依次对每一个元进行识别,把标题元找出来。
- 结果:分成基本信息和复杂信息两类
2) 基本信息识别
- 强标识:如“男”、“汉族”等,设计正则表达式
基于信息上下文位置的“夹逼”算法:如果一个元的前后都是一个标题元,且前一个元是基本信息元,则认为该元是前一个元对应的内容元;
基于信息位置的滑动窗口算法:标题内容对应方式在排版上是以纵向为准,所以当转化成元序列时,顺序不在是“标题 1” +“内容 1” +“标题 2” +“内容 2” +……的形式,而是“标题 1” +“标题 2” +……+“内容 1” +“内容 2” +……。如果在元序列里找到连续的标题块时,就基本可以确定出现了这种情况。
如果把连续的多个标题称之为标题窗口,通过使其向后滑动,然后匹配,最终找出各个标题对因的内容元。关键是如何确定所需要的滑动步长是多少,即如何确定内容窗口。
- 支撑点:在一个连续的内容元序列中(其中不包括标题元),其中已经识别的内容元称为该序列的支撑点。
- 如果一个内容元序列,其中有一个或多个支撑点与标题窗口相对应,则该内容元序列即是需要寻找的内容窗口,当对应支撑点越多,置信度越高,如果内容元序列中没有支撑点,则该算法失效。一般的,支撑点都是那些强标识的内容元,因为它们仅依赖自身信息就可以被识别。
“标题+内容弱标识”算法:
前提:标题所对应的内容通常都在其附近,内容弱标识特性本身不能确定其的类比,但是加上附近的标题信息,其识别的置信度会大大增加。
做法:确定标题,确定识别深度(基本信息一般是 1),根据标题对应的正则表达式判断目标内容是否符合弱标识符的特征, 如果符合则认为这是其内容, 反之不能确定。
3) 复杂信息识别
- 目标:不需精确识别,找到所属大类。
- 例如:大类是工作经验,不必要识别出其是公司描述。二级识别特别是针对所属大类不同,但文本近似的情况,例如:工作起始时间和学历起始时间。
- 按重要程度分:
一级字段:工作经历、教育经历、培训经历、项目经历;
二级字段:奖励、个人评价,技能技巧 - 识别方式:
- 1.基于正则表达式和文本位置的匹配
过程:从标题文本的位置开始,向后搜索,并用相应的弱标识正则表达式进行匹配识别,这种“弱标识+位置”的识别方法,有较高的置信度;
将匹配的文本标记出来, 一直搜索到下一个已经识别且与该类不同的文本为止
结果:通过已识别的文本,可以确定该文本块的一个子集,即标题文本之下,最后一个已经识别的文本之上的文本块。该子集中的文本,可以以较大概率 确定是属于目标类别,其置信度与“弱标识+位置”方法置信度同。该子集的补集,则可能是属于该类别,也可能不属于该类别,本算法无法确定,即下边界无法确定问题。 - 2.特征文本标识方式
做法:用正则表达式匹配,识别出特殊文本,然后按照匹配识别算法中所述的方法,确定子集,然后识别。 - 3.统计方式
模型:基于向量空间模型(向量来表示文本:通过分词将文本表示为向量空间中的一个向量,由这些词作为向量的维数来表示文本)
做法:对每一类先确定一批训练文本,通过上述方法确定每一类的特征向量;
当有一个新文本时,也通过上述方法得到其向量,与每一类的特征向量计算夹角(余弦值),
然后找出阈值之上的最大余弦值类,则认为新文本即是这一类。
- 1.基于正则表达式和文本位置的匹配
五、回溯算法
1、描述
主要对一些丢失或未找到的基本信息进行的二次识别。
2、特点:
(1)、简历中肯定会出现或者有很大概率要出现;
(2)、该信息在文本中的位置基本确定;
(3)、该字段有区别于第一次识别的特定识别方法。
3、进行回溯的字段:
姓名:在文本的开头几行,搜索深度一般定为 5 行、借助百家姓字典以及姓名的一般长度(2 至 4 个汉字),寻找符合条件的文本
省份、城市:辅助关键字(省、市等等)
六、重点字段分析算法
1、描述
主要针对学习经历、工作经历、培训经历、项目经历进行再处理。
2、特点
包含若干子字段,并且子字段按序按块存在。
3、思想
主要采取字典的方式,从中找出感兴趣的有效信息,并按原文本中的顺序排列,进行分块,得到识别结果。
4、实现
-
1.信息提取:
先根据目标字段定义各类字典(如学习经历包括起止时间、学校、专业、学历),
然后根据字典提取信息,并且保留其在原文本中的书写顺序。
字典的实现是用正则表达式的方式实现 -
2.信息分块:
特点:
1.多个部分组成,且每个部分结构相似;
2.绝大多数情况下,都会有起止时间。
由于通过字典识别的方式,起止时间的识别率较高,且格式固定,接近 100%,
假设:假设所有文本都带有起止时间,且所有起止时间都能被准确识别。我们把有效信息序列做第一次分块;
正常简历中该类字段每个部分结构相似,所以假设每个块的顺序一致,所以检查第一个块及其附近文本,确定块内序,然后做块修正(第二次分块)