文本挖掘教程:如何从一份简历中快速找到有用信息
Posted 论智
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本挖掘教程:如何从一份简历中快速找到有用信息相关的知识,希望对你有一定的参考价值。
编者按:如果你曾负责过招聘,筛查简历一定让你又爱又恨,能看到一份层次鲜明重点突出的简历简直是一股清流。面对格式多样的简历,如何能一眼看到重点呢?作者Yogesh H. Kulkarni就设计了一款能挖掘简历中重要信息文本的框架RegEx。以下是论智的编译。
摘要
本文展示了一种用于从文本简历中挖掘相关信息的框架。虽然这里只有一份简历作为案例,但是今后,框架不仅可以进一步扩展到不同简历格式上,还可以用到例如决策、合同、药物说明书等文本上。
介绍
世界上大多数非结构化的数据都在文本形式中。为了理解这一点,我们要么花费大量精力处理它,要么你运用一些自动手段提取出有用信息。面对大量、风格各异的文本数据,还是需要用文本挖掘技术提取相关信息,将结构混乱的数据转化成结构清晰的形式,之后才能进一步进行处理、分析、可视化。
这篇文章的关注重点比较特殊,是候选人的个人档案或简历。我们都知道,HR收到的简历通常有各种格式的(txt、doc、pdf等等),而且内容和版面设计也是五花八门,想从这些文件中筛选出自己认为有用的信息是一项非常有挑战性的工作。即使如此,我们可能还不能完全提取出有用的信息,因为格式实在是多种多样,所以我们可以先从简单的步骤开始,至少从我们已知的形式中提取出有效信息。
简单地说,这里有两种方法:基于语言学的方法和基于机器学习的方法。在语言学的方法中,为了寻找关键信息用的是模式搜索的方法,而在机器学习中,提取信息时用到的是监督或非监督的方法。在这篇文章中用到的RegEx术语基于语言学的模式匹配方法。
框架
想从简历中提取目标对象的一种简单方法就是在编码程序中,为每个对象写一个模式匹配的逻辑。如果模式有任何改变,或者如果有新的对象或模式出现,你需要改变编码程序。这使得框架的维护变得非常麻烦,复杂程度不断提高。为了解决这个问题,我们的框架提出了分离逻辑分析和目标种类的方法,下面会详细进行讲解。目标对象和它们的RegEx模式在配置文件中都有详细的记录,文件同时还记录了为每种对象提取方法的类别。这种分离方法的优点是,它不仅可以重复使用,保持稳定,而且还可以用到其他领域,例如合同文件、法律文件或者医疗报告等等。
元素查找
配置文件指定了需要被提取的对象以及它们的模式和提取方法。它同样指定了需要寻找目标所在的区域。具体代码如下:
姓名:通常简历的第一行会写姓名,有可能会带有“姓名”两个字作为开头。
电子邮件:通常是一个单词(其中可能会夹杂一个点),然后出现“@”,之后又是英文字母、标点、字母。
Python的’etree’ ElementTree库用来在内部词典中分析config xml。
分析器读取技术参数的词典,并用它来寻找文本简历中的元素。
像上述元数据一样,教育资质可以按以下步骤搜索:
利用分析器的“section_value_extractor”,在“EducationSection”区域中进行分析,通过匹配文字找到区域内的价值。
san如果分析器找到任何含有“10th”、“X”、“SSC”的文字,它就会提取出描述中学的相关信息。
如果分析器找到任何含有“12th”、“XII”、“HSC”字样的文本,它会提取出代表高中学历的关键信息。
分割
上面的代码表示标有“总体部分”或“教育部分”的文本。这些通常都在配置文件的顶部。
“section_extractor”方法一行一行地分析文件,并寻找文本的小标题。
通过标题的关键词可以了解每一段的主要内容。例如“总结部分”可能会含有“总结”、“目标”等词语。
一旦匹配,“总结部分”就确定了下来,之后会进行下一部分的分析。
新的标题匹配后,系统会自动开始下一部分的匹配。
结果
分析出的一份简历如下:
具体的操作步骤可见GitHub:github.com/yogeshhk/MiningResume
结语
这篇文章展示了从非结构化数据(如简历)中挖掘结构化信息的过程,由于只有一个案例展示,因此它可能不适用于其他格式。今后我们会对此改进,使其适合其他简历类型,甚至其他领域的文档。
以上是关于文本挖掘教程:如何从一份简历中快速找到有用信息的主要内容,如果未能解决你的问题,请参考以下文章