做者|Low Wei Hong
编译|VK
来源|Mediumgit
当我仍是一名大学生的时候,我很好奇自动提取简历信息是如何工做的。我将准备各类格式的简历,并上传到招聘网站,以测试背后的算法是如何工做的。我想本身尝试建一个。所以,在最近几周的空闲时间里,我决定构建一个简历解析器。github
一开始,我以为很简单。只是用一些模式来挖掘信息,结果发现我错了!构建简历解析器很困难,简历的布局有不少种,你能够想象。算法
例如,有些人会把日期放在简历的标题前面,有些人不把工做经历的期限写在简历上,有些人不会在简历上列出公司。这使得简历解析器更难构建,由于没有要捕获的固定模式。服务器
通过一个月的工做,根据个人经验,我想和你们分享哪些方法工做得很好,在开始构建本身的简历分析器以前,你应该注意哪些事情。机器学习
在详细介绍以前,这里有一段视频短片,它显示了个人简历分析器的最终结果(https://youtu.be/E-yMeqjXzEA)工具
我在多个网站上搜了800份简历。简历能够是PDF格式,也能够是doc格式。布局
我使用的工具是Google的Puppeter(Javascript)从几个网站收集简历。性能
数据收集的一个问题是寻找一个好的来源来获取简历。在你可以发现它以后,只要你不频繁地访问服务器,抓取一部分就能够了。学习
以后,我选择了一些简历,并手动将数据标记到每一个字段。标记工做的完成是为了比较不一样解析方法的性能。测试
剩下的部分,我使用Python。有几个包可用于将PDF格式解析为文本,如PDF Miner、Apache Tika、pdftotree等。让我比较一下不一样的文本提取方法。
使用PDF Miner的一个缺点是,在处理简历时,简历的格式相似于Linkedin的简历,以下所示。
PDF Miner阅读PDF的方式是逐行的。所以,若是发现左右两部分的文本位于同一行,则将它们组合在一块儿。所以,正如你能够想象的那样,在随后的步骤中提取信息将更加困难。
另外一方面,pdftree将省略全部的'\n'字符,所以提取的文本将相似于文本块。所以,很难将它们分红多个部分。
所以,我使用的工具是Apache Tika,它彷佛是解析PDF文件的更好选择,而对于docx文件,我使用docx包来解析。
这是棘手的部分。有几种方法能够解决这个问题,但我将与你分享我发现的最佳方法和Baseline方法。
咱们先来谈谈Baseline方法。我使用的Baseline方法是首先为每一个部分(这里我指的是经验、教育、我的细节和其余部分)抽取关键字,而后使用regex匹配它们。
例如,我想提取大学的名称。所以,我首先找到一个包含大多数大学的网站,并将其删除。而后,我使用regex检查是否能够在特定的简历中找到这个大学名称。若是找到了,这条信息将从简历中提取出来。
这样,我就能够构建一个Baseline方法,用来比较其余解析方法的性能。
这是我发现的最好的方法。
首先,我将把纯文本分红几个主要部分。例如,经验、教育、我的细节和其余。我要作的是为每一个主要部分的标题设置一组关键字,例如工做经验、教育、总结、其余技能等等。
固然,你能够尝试创建一个机器学习模型来实现分离,但我选择了最简单的方法。
以后,将有一个单独的脚原本分别处理每一个主要部分。每一个脚本都将定义本身的规则,这些规则来提取每一个字段的信息。每一个脚本中的规则实际上都至关复杂。因为我但愿这篇文章尽量简单,因此我如今不会透露。
我使用的机器学习方法之一是区分公司名称和职务。我在这里使用机器学习模型的缘由是,我发现有一些明显的模式能够区分公司名称和职务,例如,当你看到关键字“Private Limited”或“Pte Ltd”时,你确定它是一个公司名称。
我在哪里能获得训练数据?
我从greenbook中搜集数据以获取公司名称,并从这个Github仓库中下载了职位列表(https://github.com/fluquid/find_job_titles)。
在获得数据后,我只训练了一个很是简单的朴素贝叶斯模型,它能够将职称分类的准确率提升至少10%。
总之,我解析简历解析器的策略是分而治之。
我使用的评估方法是fuzzy-wuzzy方法(去重子集匹配)。好比说
接下来的计算公式
token_set_ratio = max(fuzz.ratio(s, s1), fuzz.ratio(s, s2), fuzz.ratio(s, s3))
我使用token_set_ratio的缘由是,若是解析的结果与标记的结果具备更多的公共标记,则意味着解析器的性能更好。
原文连接:https://towardsdatascience.com/how-to-build-a-简历-parsing-tool-ae19c062e377
欢迎关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官方文档:
http://sklearn123.com/
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/