wanghaisheng / resume-parse-evaluation

Evaluate existing engine of resume parse for Chinese 对各种简历解析工具的测评
MIT License
158 stars 44 forks source link

工具或测评对象的收集 #1

Open wanghaisheng opened 6 years ago

wanghaisheng commented 6 years ago

https://github.com/tylerlong/sample_resumes

wanghaisheng commented 6 years ago

以 简历解析 简历提取为关键词在github上检索 仅有四处 https://github.com/xsocket/job https://github.com/ccccsy99/resume-parse-python https://github.com/liyaopinner/parser https://github.com/lietou1986/xparser https://github.com/keliangyong/htmlParser https://github.com/altraman00/hrweb

https://github.com/fellowlong/hbms

HTML https://github.com/cjobcn/DOMPartitionParser https://github.com/zhanghe06/selenium_project https://github.com/hankcs/HanLP/issues/666

https://news.ycombinator.com/item?id=13729301

商业软件

http://www.buyu-tech.com/ http://www.cv-parser.com/ http://youyun.com

因业务需要,试用了几个中文简历解析的效果

http://k18.com.cn: 这家做解析有一定的时间了,改头换面也包装了几家分店。总体效果还可以,但还存在不少的问题;

http://youyun.com: 他家的demo效果很一般,稍微特殊一点的情况就处理不好;

http://resumesdk.com: 这家比较低调,感觉不太善于宣传,但总体效果是三家中最好的,特别是能很好解决不同网站模板包括自由格式的简历,而且上手很简单方便,因此最终我们选用了这家。 简历解析Daxtra 做得相当不错,我听说他们香港有设点也在国内推广,听说是爱丁堡大学教授开发的算法。蛮多外国大公司和猎头用他们的。 http://www.daxtra.cn/ 小析简历解析,免费试用现在,国际大数据团队研发的

www.littleparser.com http://cv-extract.com/

wanghaisheng commented 6 years ago

我们现在这个简历库就是,稍微一个PDF就读不出,或者乱码,不录入又要被老板问,哎

这个解析引擎涉及到的细节很多,望你们把这个库越建越智能,我们HR也能从机器劳动中解脱出来做更有效的工作和业绩 :) 个人试用K18,感觉效果很一般,完全依赖于关键词。

简历智能解析,如果要达到很好的解析效果,还是需要下大功夫的。倒不是需要多么高深的算法,而是需要处理太多的细节问题,因为每个人的简历格式千差万别,需要不同的处理策略。如何能让成百上千个策略在一个系统中同时工作,而又能保持灵活、高效、精确的处理效果,这很考验工程师的整体设计和算法编码能力。

wanghaisheng commented 6 years ago

java 开发一枚 公司内部做人才系统 需大量解析简历 目前使用tika 但准确率 不尽人意 公司明确 不接入第三方 希望做过的各位 有什么思路 建议 不吝赐教

得用到更深的NLP技术,分词->词性标注->句法分析->句法依存树生成->语义分析->语义依存树生成->关系实体抽取->知识图谱,最后形成垂直领域的知识图谱,才能一劳永逸的解决问题。当然,我这只是给你提个建议,具体操作非常复杂,还得你亲力亲为呐,祝好!

wanghaisheng commented 6 years ago

简历解析是干啥的?

我们先看看网友们的控诉:

[泪]招聘:聘专人帮我录入简历信息,每天至少完成50个公司的简历投递工作,100元/天。[生病]我的脖子和眼睛已经不行了,痛痛痛痛痛!!! ​

录入简历简直心力交瘁……这种把自己扒开供人评论的感觉……还没点……还要假装丰满…心好累… ​

上海实习#【HR】Dover 美国都福集团总部目前在上海招聘HR Intern,负责协助招聘团队沟通及简历录入整理。要求:一周4-5天有空,时间能保证2个月以上。沟通能力强,踏实有责任心,英文workable。大三研一优先。简历请投至aytz@dovercorp.com 或者智联招聘。 ​

我经常想,OpenHire的设计人员的大脑究竟是什么回路的?不知道HR录入简历最重要的就是快速准确方便吗?大量需要手动录入的内容,不设置快捷键,在密密麻麻的职位名单里眯着眼睛找要存入的职位,今天录入时居然还提示说我10分钟未操作所以已经被踢出系统,尼玛老子一直在操作好吗!还能再翔一点吗?[怒] ​

以每小时10个人的速度录入138人简历。加班第四天。 ​

为什么不统一弄个最全面的简历模板,每个人把自己的简历信息录入一次,企业要求特殊化也可以加op,网申时申请者再补充就好了。企业筛简历的时候根据关键字进行筛选。毕业生只用填一次简历模板,加针对个别企业的op,就不用一遍遍重复无用功了。 每申一个就重新来过一次,还大同小异,真是费神费时。 ​

体验生活部分:中华英才网兼职简历录入员。好开心啊好开心。谢谢师傅有这好工作想到我哈哈[哈哈],今天天气好晴朗啊处处h好风光啊!带领我的小伙伴们一起走向发家致富的第一步! 我在:

近200份线下简历终于录入系统,加上网上申请简历共近1300份,再给学生们配试卷、发邮件、发短信。伙伴儿们辛苦了!同学们,你们收到短信快快完成测评哟,祝好运! ​

每到月底,想着那100份简历要录入公司系统,我就烦,烦,烦!!![抓狂] ​

我们现在这个简历库就是,稍微一个PDF就读不出,或者乱码,不录入又要被老板问,哎

这个解析引擎涉及到的细节很多,望你们把这个库越建越智能,我们HR也能从机器劳动中解脱出来做更有效的工作和业绩 :)

个人试用K18,感觉效果很一般,完全依赖于关键词。

简历智能解析,如果要达到很好的解析效果,还是需要下大功夫的。倒不是需要多么高深的算法,而是需要处理太多的细节问题,因为每个人的简历格式千差万别,需要不同的处理策略。如何能让成百上千个策略在一个系统中同时工作,而又能保持灵活、高效、精确的处理效果,这很考验工程师的整体设计和算法编码能力。

在当前求职布告软件和社交招聘盛行的环境下,每个空缺职位可能有数以百计的申请。HR小姐姐和猎头顾问每天要处理大量简历,为积累更加丰富完善的人才库,必须在前期付出大量手工的、枯燥的、重复的文字处理工作,将来自于各渠道的简历整理为标准格式录入人才库。然后才能对大量简历进行海选评估,初步筛选之后再安排笔试面试以实现公司的人才储备。挑选正确的简历/履历是所有公司的一项关键招聘业务决策。如果在筛选过程中,出现错误的候选人信息或者时间过长可能意味着将会错过合格的求职者,不相匹配的求职者,或者变得缺乏竞争力,使得招聘成本进一步提高。

部分NB的信息化水平较高的企业,应聘者在系统里提交简历的时候,不管你简历是什么格式的,他们都会要求你把所有基本信息都填在正确的textbox里面,然后再提交一个附件。结构化的信息(姓名、年龄、性别、职位、学历、毕业院校、工作时间、所在城市、联系电话等内容)是给HR看的,那个附件是HR筛选过后才会打开的。那如果信息化水平比较低,怎么办,简历解析就是电脑帮你自动的从简历里把结构化的信息挑出来。 行业数据显示,在从事招聘工作的人员工作的有效时间中,超过 20% 的时间用来对简历进行文字处理。伴随着技术的发展,识别简历中固定字段的简历解析技术也越来越成熟。

一般来讲,不同的候选者和公司所选择的招聘渠道的不同,我们会收到不同类型的简历:

1.1 各大招聘网站上的网页版或网站上提供下载的简历

应聘者在各网站上,包括外部的网站和自己公司的网站,按网站提供的固定模板填写信息,形成网页版或从网页下载的其它格式简历(统称网页版简历)。

针对网页版简历的基础解析技术,各公司准确率不相上下,难度在于针对每一个固定模板做细致的分析,简历解析技术的准确度依赖于勤奋和经验。 智联、51、拉勾、猎聘、

1.2 应聘者按照自己的想法和偏好,制作word、pdf、png,甚至是 excel 格式的电子文档简历。

这种简历格式五花八门,由于不是直接以网页代码的模式呈现,且没有相对固定的模板和关键词字段,就给系统识别带来了挑战。对于系统来讲,要寻找规律并进行判断和识别就会有一定的难度,这一类的简历解析无法做到百分百。

1.3 简历文件的格式 doc, docx, xls, xlsx, mht, mhtml, html, htm, txt, pdf, rtf, eml, wps, xml, dotx, msg, jpeg, jpg, gif, png, bmp 等格式,基本上覆盖了招聘市场上99%的简历格式。

1.4 简历中的数据 中英文混合,大概有100余个字段,涵盖基本信息、联系方式、期望职位、教育经历、工作经历、 项目经历、技能、语言能力、证书、自我评价等字段信息。

常规解决思路:

简历解析的技术壁垒可以说是低,任意几个程序员就能做到,也可以说非常高,因为要做到满意的结果非常难。 简历解析系统可以作为一个计算机本科生的毕业设计,也可以是几个教授几年的心血。简单来讲,简历解析属于那种前60%~70%的效果能够快速达到,但是后30%的效果则需要投入比前者多得多的工作。除此之外,若要达到高准确率,还需要有大量的简历库和词典去做支撑。俗话说的好,数据是AI的磨刀石嘛。

在钱和时间二者之间,我们要么寻找靠谱的合作伙伴提供服务,要么撸起袖子自己干。

对于一般的企业来说,在不想多花钱,且简历的量不大且来源有限格式固定,希望能够对技术完全可控的情况下,怎么来自己攒一个工具出来呢? 第一步,撸出用于提取信息的中间格式,我们希望我们的数据提取算法能够兼容不同格式(pdf、doc、docx、html、htm、txt、zip、mht、ppt)的简历,就需要设计一种通用的中间格式,且要能够保证原始信息的结构、语义尽量保持一致,市面上的做法通常是得到简历的txt文本(这种做法只保留了原始版面中的文字顺序 其他诸如字体大小、字间距、行间距等等信息通通丢失了)。

先看简历类型 如果是HTML格式的简历,爬取其中的数据就得根据不同的渠道来定制爬虫的提取规则,纯体力活。 如果是PDF,word 等其他格式,我们需要先将其转换成txt,这一步有很多工具可以用。有时候为了达到一个最优的效果,我们会同时使用一两个库来处理,综合二者的结果. 很多时候,需要我们学习不同库,了解思路 - 学习并了解对于每种格式,如何处理会得到最优的中间结果(txt文本),特别对于一些花样比较特殊的的简历格式,学习思考如何能够得到最优的转化结果以便于后续我们的提取动作.这里举个例子:大多数的库默认都是从上至下的顺序来读和输出文本的,如果一份简历的书写格式是从左到右的,那就会很麻烦。 第二步,有了准确的中间格式以后,需要设计算法 - 使得无论关键词是否出现,也要正确划分每个模块。 但我们都会面临下面几种情况 1)当简历有固定的模板:有些应用场景中,简历来自51、智联、猎聘等网站,他们有固定的几种格式,这种简历只需要通过正则+规则的方式进行处理,就能达到很高的准确率;但是如果招聘网站简历模板规则做了调整,比如更换了性别和年龄的填写位置,之前的算法就会出现解析错误,需要及时调整。 2)对准确率要求不高:如果无固定模板,但对准确率和召回率要求不高,比如60%、70%左右,这种基于规则的方式也能搞定; 3)当简历无固定模板且准确率要求很高:

原则上我们希望能够分而治之,也就是说先把一份简历分成若干大块(Block),例如基本信息、求职意向、工作经验、教育背景、证书、语言能力、专业技能、兴趣爱好。然后将大块分成若干小块(sub-block),比如不同时间不同公司不同职位的工作经验/项目经验。然后将小块分成若干行(line),再将行分成段(segment)

分块首先我们能想到的是枚举出很多关键词 - 例如人眼看了很多简历以后,寻找关键词,如基本信息、教育背景,学习经历,项目经历等。 然后设置规则,靠关键词提取。但这种看似合理的方法有一些不太好的地方,例如没有关键词,关键词打错字,关键词没有在词库里,更常见的是用了网上的模版,如智联招聘,单相关内容填错了,例如工作经历填写到了项目经历里面了。这些都是要额外考虑的。当然我们也可以模仿人类是如何做到这个结果的,当你想提取教育经历的内容时,你会一行行往下读,直到你认为这部分以下都是讨论教育的经历了为止。所以人类起始并不是去找他这个关键词,更重要的是语言上的理解,即使不需要关键词,人也能够识别出来。这个问题在机器学习里叫做序列预测问题。如大学这个词经常会出现在教育经历,工资这个词经常出现在工作经历等,结合模块间的跳转概率, 如教育经历经常跳转到工作经历,但反过来概率很小,如技能总是放在最后等。在这里,尽量不要人手设定任何规则,全让大数据说话,让数据显示规则, 让数据显示模式,效果会更好。

如果是复杂的大块,里面包含若干子块,比如工作经历、项目经验,我们需要使用关键行来对大块进行划分 - 例如在工作经历中,写出时间,公司名,部门名的规则表达式,来判断一行是否属于该属性 。 对于算法,需要考虑的有几个方面的特征,如上下文特征,这一行表达了什么,上一个小块信息是否已经齐全,如果从这一行开始一个小块,在此行之后能得到一个完整的小块吗, 等等。 要充分能够利用上下文的信息,如上个划分点到目前行信息是否齐全,本行是否有起始行的特征, 本行以后是否有足够的信息等等。

这里面需要考虑的点有 1:很多公司不是有标准后缀的,例如腾讯科技,网易云音乐等 。 2:并不是所有公司名都是表达公司名,例如在阿里巴巴做市场营销工作期间谈到百度做为客户,百度这个词就出现了。是否能说明是公司名字呢还是经历? 3:即使你成功预测到了公司名,时间和职位顺序也非常影响划分,假如利用时间进行切割时, 上一段的公司名就很容易分到了这一段的时间里。

分段的话,使用规则来进行分割。比如给定一行文本,是公司名?时间?部门?还是描述。此处可能需要大量各种来源的样本,对文本进行准确理解及分类。 比如如果第一段经历中是先时间后公司,第二段是先公司后时间,跟进时间来切割的就会出现错位。但是当面对描述工作经历的一行文本时, 假如里面并没有识别到公司名,或有多个公司名时,这些通过规则都是非常难解决的。所以需要大量简历样本的支持,而不是人为提取的经验规则。
 此时可能需要机器学习的介入,特别是对一些实体的识别,毕竟有很多核心字段本身就是实体,比如公司名、学校名等。

而对于机器学习的使用,也需要控制在合理的范围内,之前看过一篇文章,基于CRF的思路去对不同的块进行建模,这个思路本身很好,但在这儿显得过于笨重,因为当碰到新的case时,模型的训练和调优一个流程下来需要不少时间,反而不如基于规则的迭代来的快。合理的使用规则+机器学习的方案,能使效果提升至90%以上。

做几十甚至上百个字段的解析和识别任务,无论如何,规则是避免不了的。问题是当你的规则有成千甚至上万条的时候,你如何设计一个系统能够让它们一起愉快的协同工作,这是关键。至于思路的选择,和具体的场景有关:简历类型及想要达到的准确率。

对于想撸起袖子自己干的少年,这里的建议是:基于纯规则或者基于规则+机器学习。

开源工具参考列表

商业软件的选择

公司名称 网站 网友评价 测试demo 支持格式 价格 部署方式 其他
捕鱼科技 http://www.buyu-tech.com/ http://www.cv-parser.com/ -- Y 不支持图片 pdf、doc、docx、html、htm、txt、zip、mht、ppt等 --- SaaS和本地部署
云解析 http://youyun.com 他家的demo效果很一般,稍微特殊一点的情况就处理不好; Y 21种简历格式 支持图片 saas
cv-extract 北京有本科技 http://k18.com.cn 这家做解析有一定的时间了,改头换面也包装了几家分店。总体效果还可以,但还存在不少的问题; Y 支持图片 SaaS和本地部署
北京云湾科技有限公司 http://resumesdk.com 这家比较低调,感觉不太善于宣传,但总体效果是三家中最好的,特别是能很好解决不同网站模板包括自由格式的简历,而且上手很简单方便。 Y 支持图片 SaaS和本地部署
德士达科技公司 http://www.daxtra.cn/ 简历解析Daxtra 做得相当不错,我听说他们香港有设点也在国内推广,听说是爱丁堡大学教授开发的算法。蛮多外国大公司和猎头用他们的。 N -- -- --
杭州少世科技有限公司 www.littleparser.com 小析简历解析,免费试用现在,国际大数据团队研发的 Y 不支持图片 -- SaaS --
山卡拉 http://cv-extract.com/ -- Y 不可用 不支持图片 -- SaaS ---
CV Tech 简历 http://www.jianlijiexi.com/ -- Y 支持图片 -- SaaS和本地部署 ---
大易 http://www.dayee.com/wt/dayee/dayeePageresume -- N 不支持图片 -- -- --

商业软件测评报告

未完待补

wanghaisheng commented 6 years ago

为解决企业人工筛选电子简历效率低等问题,提出一种简历自动解析及推荐方案.对中文简历中的句子进行分词、词性标注等预处理,表示为特征向量,并利用SVM分类算法将所有句子划分成预定义的六个通用类别,包括个人基本信息、求职意向和工作经历等.利用个人基本信息的词法和语法特征,手工构建规则来实现姓名、性别及联系方式等关键信息抽取;对复杂的工作经历等文本用HMM模型进一步抽取详细信息,从而形成基于规则和统计相结合的简历文本信息抽取方法.考虑企业和求职者双方偏好,提出基于内容的互惠推荐算法(Content-Based Reciprocal Recommender algorithm,CBRR).实验结果表明,整个方案能有效处理电子简历,提高简历筛选效率,辅助企业进行人才招聘. http://www.nwu-ipmi.cn/firstpage/Look.aspx?type=3&id=1

wanghaisheng commented 6 years ago

捕鱼科技

第一步上传简历文件

POST /PekeUploadJSON HTTP Host www.cv-parser.com UserAgent Mozilla Macintosh Intel Mac OS X rv Gecko Firefox Accept application/json text/javascript q AcceptLanguage zhCNzhqzhTWqzhHKqenUSqenq AcceptEncoding gzip deflate Referer http://www.cv-parser.com

ContentType multipart/form-data boundary

第二步 解析简历 POST /resume HTTP Host www.cv-parser.com

Content-Type application/x-www-form-urlencoded

step=analyze&&file_name_original=EABFEAEEBEADEAEAEAAEADAEAEBFAEBEEBFAEAFEBBBEBBFEAEAABEAEBAAEBB.pdf

结果在html中的script标签下的 var candidate 中