一种基于SVM文本分类的简历精确解析方法与流程

文档序号:13005558阅读:533来源:国知局

本发明涉及一种基于svm文本分类的简历精确解析方法,是自然语言处理、模式识别、ac自动机搜索技术和.net操作microsoftword技术,是集成了多个技术的简历精确解析方法。



背景技术:

目前市面的人力资源网站上传简历解析方案的一般做法如下:将用户上传的文件转换成纯文本格式,列出需要解析的字段名称字典,然后在简历中查找这些字典中的词,一旦找到匹配的词语就返回以后一定范围内的内容作为这个字段的解析结果。这样做一般会有两个个很大的缺点:第一,如果在一大段文本的中间出现了一个简历关键词,那么就会把原本在一起的内容断开,这种方法的解析结果将会完全错误,导致解析结果信息缺失、张冠李戴,算法鲁棒性较差。第二,上传时如果将文件均转换成文本,那么原来的简历格式信息就会丢失,那么相应的也会丢失很多有用的内容信息。



技术实现要素:

本发明技术解决问题:克服现有技术的不足,提供一种基于svm文本分类的简历精确解析方法,提高的解析结果的准确率和完成性。

本发明的原理:将各类格式简历转化成pdf格式,再进一步转化成xml格式。针对其中的格式信息,利用支持向量机进行模式学习,从而让机器自动找出简历中基本信息、教育经历、工作经历、项目经历等模块标题,进而切割成小块进行进一步解析。其中doc、docx、html和mht文件处理较为困难,使用asp.net操作microsoftword来达到正确转换的目的。

在每块的精确解析中,使用自然语言处理技术和ac自动机搜索技术精确解析出各模块信息。在工作经历解析模块中,本发明使用ltp等模型进行各类组织的命名实体识别。

本发明的具体技术方案如下:

一种基于svm文本分类的简历精确解析方法,步骤如下:

第一步,在.netframework下操作microsoftoffice,将各种格式的简历文件转换为pdf格式,再由pdf转换为xml格式文件;

第二步,提取xml格式下各简历文本行的标签并生成相应的特征向量;

第三步,对各简历文本行进行标注,根据标注值和各简历文本行对应的特征向量采用svm进行分类训练,得到分类器;

第四步,利用分类器将各份简历按标题行进行切割;将各份简历切割得到的内容分为基本信息、教育经历、工作经历和项目经历四部分,对这四部分中的细节信息分别进行解析,提取出所需信息;再将从各部分这四部分中的细节信息中解析提取的信息进行统一的标准化处理,存入数据库,具体为:提取时涉及到各种字典的遍历,先构造出各类字典的ac树作为自动机的搜索数据结构,再构造fail指针,fail指针指向的是如果当前节点匹配失败,则从通过fail指针指向的新的节点开始匹配,但新的节点必须满足所在在新节点模式串的前缀必须是转移前的节点所在模式串的子串,也就是已经匹配成功的部分,它使当前字符失配时跳转到具有最长公共前后缀的字符继续匹配,ac自动机在匹配时如果当前字符匹配失败,则利用fail指针进行跳转,如果跳转,跳转后的串的前缀,必为跳转前的模式串的后缀并且跳转的新位置的深度,即匹配字符个数一定小于跳之前的节点,利用广度优先遍历在树上面进行fail指针的求解,最后,扫描主串进行匹配,从而完成精确解析。

所述第一步具体实现如下:

(1)将获取的简历文件分为pdf格式和非pdf格式两类;

(2)用.netframework操作microsoftword将步骤(1)中非pdf格式的html、mht、doc、docx格式文件转化为pdf格式;

(3)将步骤(1)和步骤(2)中得到的所有pdf文件转化成xml格式文件。

所述第二步具体实现如下:

(1)提取xml格式下各份简历文件中每行文本的标签;

(2)对各简历的每行文本提取7个特征以及相应组合特征组成每行文本的特征向量,7个特征如下:(a)这行文本是否独处一行;(b)这行文本是否字数小于10;(c)这行文本是否在标签字典中;(d)这行文本是否含有标点符号;(e)这行文本的font是否与全文文字占比最多的font不同;(f)这行文本是否以标签字典中某个元素开头;(g)这行文本是否包含字母;另外,对以上7个的任意两个做异或操作,再扩充21个维度,得到相应组合特征。

所述第三步具体实现如下:

(1)对各份简历的每行文本根据是否为标题行进行0或1的标注,是标题行标注为1,不是标题行标注为0;

(2)将每行文本的特征向量和对应的标注值作为训练数据集,用svm分类器进行分类训练;

(3)对步骤(2)中训练出的svm分类器进行调参和优化,提高分类器的准确率和召回率,最终得到判断简历文本是否为标题行的分类器。

本发明与现有技术相比的优点在于:

(1)本发明使用svm分类器对标注好的简历数据进行训练,得出分类模型,再使用该分类模型对新的简历的每一行进行判别,找出各模块标题。而不是像过去一样只将简历转换成纯文本进行解析,此方法的分块正确率很高。在下一步的解析过程中使用了命名实体识别技术去解析每个块的细节信息,比如可以将‘工作经历’自动分段呈现,保证信息基本不会缺失。

(2)本发明是先通过一定的技术手段将各种格式的简历都转换成pdf格式的简历以保住原有的格式信息,再将pdf转换成xml文件,xml文件的每一行有属性标签,可以服务后面svm训练数据特征向量的选择,这样最后定位出的模块大标题将会更加准确。避免了一般方法的解析错误和信息丢失的缺点。

(3)ac自动机:aho-corasickautomation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂ac自动机,先得有字典树trie和kmp模式匹配算法的基础知识。kmp算法是单模式串的字符匹配算法,ac自动机是多模式串的字符匹配算法。本发明使用ac自动机技术,建立各个关键词字典的ac树,减少了因为遍历字典而产生的时间开销,大大加快了整个算法的运行速度。

(4).net操作microsoftword是通过将microsoftoffice用作解决方案的前端,可以利用熟悉的microsoftoffice用户界面和工具,例如word中的字处理功能、excel的数据分析功能和outlook的电子邮件管理功能。可以在visualstudio中开发解决方案,以自定office应用程序,并添加您的业务流程所需的特定功能。例如,可以将word转化为合同生成程序,用于将预先存在的可编辑或不可编辑部分组合成为合同。可以用excel创建针对不同的项目自定义的自动预算工作表。另外,还可以使office解决方案处于脱机状态,让复杂的解决方案可行。本发明使用.net框架调用word打开html、mht、doc、docx等格式文件,自定义实现字体缩小、保存成pdf文件等功能。这种方式可以避免由于文件损坏或者文件转换错误所带来的不能解析的问题。

(5)本发明的应用前景十分广泛,尤其是在人力资源行业。可以免去很多人工录入系统信息的工作,并且可以减少人工录入的错误。比如:在线上传简历后,自动将解析完的简历细节信息存到后台数据库。如果进行拓展,还可以用到更多需要进行文本解析的地方。

附图说明

图1为本发明简历解析方法流程图。

具体实施方式

下面结合附图及实施例对本发明进行详细说明。

如图1所示,本发明实现步骤具体如下:

各个部分方法的介绍:

●简历格式转换技术

为了避免当今解析技术纯靠模式匹配所产生的问题,本发明首先将上传的简历做大板块切割。一般的简历会分成基本信息、教育经历、工作经历、项目经历等几大基本模块,而且这些标题的字体、字号或者颜色一般会内容部分不同,这些不同可以在简历的xml格式中体现出来。xml格式文件会对每行文档加上标签,标签内容有字体、字号、颜色等内容,可以用于区分标题和内容。由于有些格式的简历转化成xml后会有格式丢失的情况,于是先将其转换成pdf格式,转换需要保持其原有的样式。网上的各类pdf转换工具的鲁棒性不太好,特别是word转pdf,经常会导致信息丢失和样式改变。本发明使用asp.net操作microsoftword,在c#脚本里实现一些文字缩小以及保存格式的功能,编译生成dll文件,再在主程序中进行调用,实现转换的目的。得到xml文件后,再进一步处理,将在原文中在一行的文本调整到一行。

●训练分类器

对3000份简历(约15000个行文本样本)进行特征提取、打标签,用svm分类器进行训练。不断调整模型参数,得出f-score最优分类模型。其中f-score的定义如下:

其中p为准确率,r为召回率。取α=1时的f值作为模型的评测标准。将3000份训练用的简历文件每一个text进行特征提取并打上label。选取一下7个特征:(1)该text是否独处一行。(2)该text是否字数小于10。(3)该text是否在标签字典中。(4)该text是否含有标点符号。(5)该text的font是否与全文文字占比最多的font不同。(6)该text是否以标签字典中某个元素开头。(7)该text是否包含字母。再加上以上特征的一些组合特征,组成每个text的特征向量。label有两种取值:0或1,0表示是标题text,1表示不是标题text。把3000份带label的简历文本作为svm分类器的训练集进行模型训练,不断的调整参数,提高模型的准确率和召回率,最终得到可用的分类器。

●用训练好的svm模型对文本进行分类

对于一份新的简历,将其转为xml格式后,提取每行文本的特征向量并送入分类器,该分类器可以自动找出每份简历的标题行。

●简历各块信息分别解析

在‘基本信息’的模块解析中,将对应文本分词、去掉停用词、标记词性,找出姓名。用正则表达式定位并提取电话和邮箱。求职意向等信息用标签进行截取,最后在用过滤机制再次筛选,保证信息的完整性。利用ac自动机建立标签搜索树,进行其他信息的提取。在‘教育经历’的模块解析中,先使用时间进行教育阶段切割,再在每个教育阶段中解析出学校、学历、专业。在‘工作经历’的模块解析中,一份简历中可能包含多段不同时间段的经历,对每段工作经历的信息提取都执行相同的过程。首先将每段工作经历分割,使用每段工作经历中的工作时间特征作为划分。接下来利用ltp模型进行组织机构及公司名的命名实体识别,再进一步利用ac自动机建立标签搜索树,进行各项信息的提取。特别的,对于工作描述、公司描述以及工作业绩三类标签,其属性信息一般为跨行的段落形式,因此需要根据新的标签出现的位置判断上述属性内容结束的位置。对于其他标签信息,可分为两类:(1)显式出现标签,(2)未出现标签。当含有显示标签时,可直接取标签后面的值,但需要特别判断标签属性内容的结束范围;当未出现标签时,需要借用模式匹配方法判断该内容是否符合某种标签值的特征;若均未匹配到,则将该内容视为剩余字符串。特别的,当最终解析的结果不含有‘工作经历’且剩余串中有连续整行的内容,则将此值作为‘工作经历’属性值。为了避免在工作经历划分时导致的错误,最后需要根据工作时间将相同时间范围内的工作经历进行合并。在‘项目经历’的模块解析中,先使用时间进行项目切割,再利用ac自动机建立标签搜索树,分别解析出项目职位、所在公司、项目介绍、项目职责、项目业绩等信息。

●解析结果存储

为了降低各种联合查询的i/o开销,使用基于文件的非关系型数据库进行存储。将解析结果做标准化处理,插入mongodb数据库。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1