常常在想,自然語言處理到底在做的是一件什麼樣的事情?到目前為止,我所接觸到的NLP其實都是在做一件事情,即將自然語言轉化為一種計算機能夠理解的形式。這一點在知識圖譜、信息抽取、文本摘要這些任務中格外明顯。不同的任務的差異在於目標的轉化形式不一樣,因而不同的任務難度、處理方式存在差異。
這個系列文章【文本信息抽取與結構化】,在自然語言處理中是非常有用和有難度的技術,是文本處理與知識提取不可或缺的技術。
本篇介紹如何從非結構的文檔中,提取想要的信息,進而結構化文本。
作者&編輯 | 小Dream哥
數字化、線上化在21世紀前15年是非常流行的概念,經過多年的發展,大部分企業都進入了無紙化、線上化的辦公、生產和銷售時代。
例如,我們大家熟悉的求職過程,很可能就是一個全程無紙化線上化的過程。過程可能如下所示:
1.你在某招聘網站填寫線上簡歷;
2.某公司HR在線上看到你的簡歷,匹配到其公司的某個職位,打電話問你是否感興趣;
3.你覺得職位、公司都挺滿意,欣然答應,並約好了面試時間。細心的你最後還詢問HR是否需要帶紙質簡歷,HR告訴你不需要,簡歷已經在線發給了面試官。面試過程,面試官在該公司的面試系統記錄了你的面試表現,表示你通過了該公司的面試。
4.隨後,你收到了該公司的郵件,郵件不僅通知你通過了該公司的考核,發給你offer。郵件里還附帶一個二維碼,告訴你下載這個APP,後續的報道流程,都通過這個APP進行。
5.你非常開心的下載並打開這個APP,APP讓你填了基礎的信息,並請你提供二甲以上的醫院的入職體檢證明。
6.你的體檢證明通過了該公司的審核,你們在線上簽訂了勞動合同,並確定了入職日期。
這是一個完全線上化和無紙化的過程,我們可以想一下,這各過程的這些步驟,哪些部分是最繁瑣,也是目前最可能應用AI技術替代人處理的。在我看來,至少有加粗的兩個部分是可以用AI技術來減輕HR工作的。以「匹配到其公司的某個職位」也就是篩選簡歷為例,我聽過很多獵頭和HR對海量篩選簡歷之抱怨。不過,用目前的NLP技術是完全可以實現大部分的簡歷分析和匹配的。因為不同候選人的簡歷格式不一,簡歷的分析和匹配勢必就會涉及簡歷的結構化,以提取候選人的姓名、技能、學歷以及工作經驗等重要信息。
我們細想一下,其實人工處理大量文本的場景是很常見的。例如,大公司的簽報流程處理人員和財務審計人員,招投標公司的標書篩選過程等等。隨著線上化的普及,這些場景給了NLP技術展現其能力的大好時機,通過文本的結構化相關的技術,從線上化文本中,提取相應場景中感興趣的信息,能夠極大的減少人工的工作量,提高效率。
總的來說,文本的結構化通過快速實現文本的理解和信息提取,大量的減少人工負荷。在線上化、無紙化流程作業的今天,具有很廣泛的應用空間。
文本的結構化是一個相當複雜的工程問題,通常情況下,辦公或者生產過程中出現的文本為word、PDF等有一定段落結構和篇幅的文檔。按照現在的NLP技術,端到端的實現文本的結構化,是不太可能的事情。
基於此,面對一個複雜的問題,通常需要步步分解,將一個大的看上去很艱難問題,分解成一些小的容易處理的問題。那我們來看看,筆者認為,通過哪些步驟能夠完成這樣一個任務。
2.1 定義需求
我這裡提到的文本結構化,通常是基於某一個場景的某一些需求,例如,求職招聘場景中的簡歷篩選與匹配需求。所以,要對文本結構化,首先需要了解的是,要從源文本中獲取哪些信息?也就是定義需求。通過需求定義,我們給問題劃了一個範圍,明確了目標。
例如,在求職招聘場景中,面對形形色色的候選人簡歷,HR感興趣的是候選人的如下信息:
姓名:周公舉
出生年月:1983年5月
畢業學校:中央音樂學院
學歷:本科
專業:流行音樂
技能:演唱,作曲,導演
工作經驗:曾發行數張音樂唱片,創作N首原創歌曲;參演5部電影,自導自演2部。
其實結構化簡歷,還有一個場景需要,就是目前很多招聘網站的收費服務:簡歷優化。將簡歷結構化的信息抽取之後,後續的簡歷篩選,簡歷優化以及崗位匹配運用NLP技術或者甚至一些簡單的判斷就能有不錯的效果了。
這個過程,通常是跟業務強相關的,可以由業務專家、產品經理主導,算法工程師配合完成。
2.2 文本的預處理
前面提到,通常情況下,辦公或者生產過程中出現的文本為word、PDF等有一定段落結構和篇幅的文檔。要用算法處理這些原始文檔,通常會面臨這些問題:
1.NLP模型無法直接處理PDF等類圖像格式的文檔;
2.文檔有可能篇幅很長,不可能直接將文本內容輸入模型進行處理;
3.比較難獲取文檔中的文檔結構信息、篇章層次信息、字體格式信息等。
對於第一個問題,通常需要PDFReader,將類圖像格式的文檔轉化為文本文檔;對於第二個問題,通常會將文檔進行分段落處理,捨棄無意義的段落,截取感興趣的段落;對於第三個問題,是最複雜的問題,這往往已經不是單純的自然語言處理的問題,通常需要結合計算機圖像處理的技術以及OCR技術,才能比較好的解決第三個問題。
文本的預處理過程,是一個複雜且重要的步驟,預處理的效果直接影響後續信息抽取模型的效果。
通常,預處理步驟的輸出應該是如下形式的json文件:
{
{
「基本信息」:「
姓名:***
出生年月:1***
」
},
{
「個人介紹」:「擅長C,python,java等程式語言,熟悉NLP算法。。。」
},
{
「教育經歷」:{
「本科」:「華中科技大學」,
「碩士」:「中國科學院」
}
}
}
通過輸出這種層次豐富、信息準確的JSON數據,後面的NLP信息抽取模型,就能夠大展身手了。
出於篇幅,「文本的結構化【上】」部分就先講到這裡,後續的部分,在我們下集部分繼續給大家介紹,感興趣的同學敬請關注。
文本信息抽取與結構化是目前NLP中最為實際且效益最大的任務,熟悉這個任務是一個NLP算法工程師必需要做的事情。
讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備註"加入有三AI NLP群"。
下期預告:詳聊文本的結構化【下】