當前位置:
首頁 > 新聞 > 用深度學習從非結構化文本中提取特定信息

用深度學習從非結構化文本中提取特定信息

用深度學習從非結構化文本中提取特定信息


本文為 AI 研習社編譯的技術博客,原標題 :

Deep learning for specific information extraction from unstructured texts

作者 | Intuition Engineering

翻譯 | AI小山 編輯 | 王立魚

原文鏈接:

https://towardsdatascience.com/deep-learning-for-specific-information-extraction-from-unstructured-texts-12c5b9dceada

用深度學習從非結構化文本中提取特定信息

這是我們在iki項目工作中的一系列技術文章中的第一篇,內容涵蓋用機器學習和深度學習技術來解決自然語言處理與理解問題的一些應用案例。

在本文中,我們要解決的問題是從非結構化文本中提出某些特定信息。我們要從簡歷中提取出用戶的技能,簡歷可以以任意格式書寫,比如「曾經在生產伺服器上部署定量交易演算法」。

本文有一個演示頁面,可以用你的簡歷試試我們的模型表現如何。

語言學模型

現代語言學模型(ULMfit,ELMo)使用無監督學習技術,比如在大型文本語料中加入RNN嵌入層(embeddings)用來「認識」基本的語言結構,然後再進行特定的監督訓練。在某些情況下,你反而需要一個在非常特定的、小的數據集上訓練出來的模型。這些模型對一般的語言結構幾乎一無所知,只對特定的文本特徵有效。一個典型的例子是影評或新聞數據集的簡易情感分析工具,這些極簡單的分析模型只能識別「好」或「壞」等形容詞的同義詞,或者判別是否有強調性辭彙存在。在我們的研究中,這兩種方法我們都採用。

通常,當進行文本語料分析時,我們會考慮文本中的全部辭彙。一些流行的文本向量化演算法,比如tfidf,word2vec或GloVe模型都使用整個文檔的辭彙表來生成向量,除了停用詞(例如冠詞、代詞,和其它十分基本的語言元素,在統計平均法中幾乎沒有語義上的意義)。如果有更明確的目標,並且有關於語料的更多的信息,你也許會判斷出哪些語料更有價值。比如說,要對菜譜的語料進行分析,把配料和菜品名稱的類別從文本中提取出來就很重要。另外一個例子是從簡歷語料中提取專業技能。如果我們能夠通過把每個簡歷與一個提取出來的技能的向量相關聯,從而使之向量化,我們就可以對行業職位的分類做得好得多。

舉例說明:

簡歷:數據科學家,機器學習、大數據、開發、統計和分析方面的實際經驗。帶領數據科學家團隊實現了Python機器學習模型的大融合、分層和特徵工程,展現出預測性分析方面的極高的準確度。使用Doc2Vec辭彙嵌入和神經網路創立了一個推薦系統。

提取的專業技能:機器學習,大數據,開發,統計,分析,Python機器學習模型大融合,分層,特徵工程,預測性分析,Doc2Vec,辭彙嵌入,神經網路。

步驟一:詞性標註

實體抽取是文本挖掘類問題的一部分,它從非結構化的文本中提取出某些結構化的信息。我們來仔細看看受到推崇的實體抽取方法的思路。如果技能主要都是通過所謂的名詞短語體現的,那麼我們的抽取動作的第一步就是實體識別,用的是NLTK庫的內置函數(參閱「從文本中提出信息」,《NLTK全書》第7部分)。詞性標註函數提取出名詞短語(NP),並用樹來表示名詞短語和句中其它部分的關係。NLTK庫有若干工具能進行這樣的詞語分解。

用深度學習從非結構化文本中提取特定信息

NLTK全書,第7章,圖2.2:基於簡單正則表達式的NP Chunker的一個示例

我們可以定義一個用正則表達式完成語句分解的模型(例如,我們可以把幾個形容詞加上一個名詞定義為一個短語),或者我們能用NLTK中的已經提取出來的名詞短語範例訓練出一個關於本文標號的模型。這個步驟能讓我們得到許多實體,其中一些是我們要的技能,而另一些不是。此外,技能簡歷也可能包含其它實體,比如地點、人物、對象、組織,諸如此類。

步驟二:候選詞分類的深度學習架構

下一步是實體分類。這裡的目標非常簡單----把技能從「非技能」里區別開來。用於訓練的特徵集是根據候選短語和上下文的結構來構建的。顯然,要訓練一個模型,我們先要創建一個標註好的訓練集,我們用1500個抽取出來的實體手工創建了訓練集,裡面包含了技能和「非技能」。

我們從不打算把模型應用於那些硬編碼的有限的技能集合,模型的核心思想是從英文簡歷的技能中學習到語義,並用模型來提取出未見過的技能。

每個詞的向量由二進位特徵組成,這些特徵包括數字或其它特殊字元的出現與否(技能通常包含數字和符號:C#,Python3),首字母或全詞大寫(SQL)。我們也看某個詞是否在英語辭彙表裡以及是否在一些主題列表裡,比如人名、地名等等。最終使用了這些特徵的模型在實體測試集中的準確率是74.4%。如果把候選詞中是否有英語里常見的前綴和後綴,做成二進位特徵,放到模型里,則模型在測試集中的準確率高達77.3%。如果模型的特徵集中再加上用單熱(one-hot)向量編碼的詞性標註,準確率就可以推到84.6%。

一個可靠的語義辭彙嵌入模型沒法用簡曆數據集訓練得來,這樣的數據集太小,也不全面。針對這個問題,你應該使用在其它真正大型的數據集上訓練出來的辭彙嵌入層。我們使用了有50個維度的GloVe模型向量,這把模型在測試集上的準確率提升至高達89.1%。你可以上傳一個簡歷文本到我們的最終模型的演示,試試效果。

用深度學習從非結構化文本中提取特定信息

流行的詞性標註程序(NLTK 詞性標註程序,Standford 詞性標註程序)經常在做簡歷短語標註時犯錯誤。原因是簡歷文本為了突顯經驗和照顧格式(人們在句子中以謂語開頭而不是主語,有時,短語沒有用正確的語法結構)就經常忽略語法,以及有許多詞是專用術語和名稱。我們只得寫一個自己的詞性標註程序解決上述問題。

分類是通過Keras神經網路進行的,這個Keras神經網路有三個輸入層,每一層都被設計用來接收特定類別的數據。第一個輸入層接收一個可變長度的向量,構成這個向量的候選短語具有我們上面討論過的特徵,它可以包含任意數目的單詞。這個特徵向量由一個LSTM層進行處理。

用深度學習從非結構化文本中提取特定信息

第二個可變長度向量含有上下文結構信息。對於給定的窗口大小n,我們在候選短語左邊和右邊各取n個相鄰單詞,這些單詞的向量拼接成一個可變長度的向量,並傳到LSTM層。我們發現最優的n=3。

第三個輸入層的長度固定,它使用候選短語的通用信息和上下文來處理向量——短語里的單詞向量在坐標軸上的最大最小值,以及它的上下文所代表的在整個短語中的眾多的二進位特徵的存在與否以及其它信息。

我們把這個結構稱作SkillExtractor,如下圖所示:

用深度學習從非結構化文本中提取特定信息

Skills Extractor網路架構

通過 Keras 實現:

用深度學習從非結構化文本中提取特定信息

查看完整代碼,點擊此處

把學習率降到0.0001之後,用Adam優化法取得了最好的模型訓練效果。我們選擇binary_crossentropy作為損失函數,因為模型的設計是對兩個類別進行分類的。

為了使用更方便,我們加入擬合函數來進行神經網路的訓練並使用交叉檢查和預測函數實現自動停止,從而實現對候選短語的未知的向量的預測。

用深度學習從非結構化文本中提取特定信息

查看完整代碼,點擊此處

pad_sequences函數把一系列特徵序列轉換成2維數組,這個數組的寬度等於這些序列中的最長者。這樣做是為了讓可變長度的數據傳到LSTM層中,並轉換成適合模型訓練的格式。

onehot_transform函數把目標值0和1轉換成單熱(one-hot)向量[1, 0]和[0, 1]

用深度學習從非結構化文本中提取特定信息

只要實體及其上下文中的單詞數是不確定的,那麼,使用稀疏的固定長度的向量就會讓人覺得不合理。因此,使用可以處理任意長度向量的循環神經網路就自然顯得很方便了。我們的許多試驗都證明了使用稠密層處理固定長度向量、使用LSTM層處理可變長度向量的架構是最合理的。

我們試驗過不同的稠密層與LSTM層相組合而形成的多個架構。最後得到的架構配置(層的大小和數量)在交叉驗證測試中取得了最優效果,同時訓練數據的使用效果也達到最佳。以後的模型要做調優,可以增加訓練數據集的大小並且適當增加層的數量和大小,如果在相同的數據集上只是單純增加層的數量和大小,會導致模型過擬合。

結果

用深度學習從非結構化文本中提取特定信息

抽取的技能舉例

用於模型訓練的所有簡歷都是來自IT行業。我們很高興看到我們的模型在其它行業(比如,設計和金融)的簡曆數據集上也有不錯的表現。顯然,處理完全不同結構和風格的簡歷會讓模型的效果打折扣。我們也想指出,我們對技能這個概念的理解可能跟別人有所不同。我們的模型所遇到的難點之一是把技能跟新的公司的名稱相區別開來,這是因為技能往往跟軟體框架的名字一樣,有時候,你區分不了一個名詞到底是指所提到的初創公司還是指新的JS框架或Python庫。但不管怎樣,在大多數情況下,我們的模型都可以作為一個有效的簡歷自動化分析工具,而且藉助一些統計方法,我們的模型可以大範圍用於任意簡歷語料的數據科學課題中。雷鋒網雷鋒網雷鋒網

想要繼續查看該篇文章相關鏈接和參考文獻?

點擊【用深度學習從非結構化文本中提取特定信息】即可訪問!

今日資源推薦:AI入門、大數據、機器學習免費教程

35本世界頂級原本教程限時開放,這類書單由知名數據科學網站 KDnuggets 的副主編,同時也是資深的數據科學家、深度學習技術愛好者的Matthew Mayo推薦,他在機器學習和數據科學領域具有豐富的科研和從業經驗。

點擊鏈接即可獲取:https://ai.yanxishe.com/page/resourceDetail/417

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

ICML 2019 最佳論文公布:繼霸榜後,谷歌再添重磅獎項
IoT和它的兩任「女友」在憋什麼大招?

TAG:雷鋒網 |