做者|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/