當前位置:
首頁 > 知識 > No.10 特徵工程之NLP特徵工程

No.10 特徵工程之NLP特徵工程

【導讀:當今人類即將或者已然了進入智能時代,這是·情報通·人工智慧科普系列第[10]篇文章,歡迎閱讀和收藏】

1 基本概念

NLP (Natural Language Processing ,自然語言處理 ) 是人工智慧( AI )的一個子 領域 。自然語言是人類智慧的結晶, 自然語言處理 是 人工智慧 中最為困難的問題之一,而對自然語言處理的研究也是充滿魅力和挑戰的。NLP 特性工程是關於機器自然語言應用和特徵工程結合,目的在於探討在企業或科研場景中,特徵工程的另一種可能性,解決特徵稀疏或數據和模型異構場景下一種通用的解決方案。一種大大降低模型開發及數倉建設人力成本,同時提高模型精度的解決方案。

NLP 的主要範疇文本朗讀 / 語音合成,語音識別,中文自動分詞,詞性標註,句法分析,自然語言,生成文本,分類信息檢索,信息抽取,文字校對,問答系統,機器翻譯,自動摘要,文字蘊涵。

2 術語解釋

分詞:指的是將一個漢字序列切分成一個一個單獨的詞。分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。

字向量:訓練語料中的所有字(或者在與料中出現次數大於某個閾值的所有字),構成一個字典 D ,字典中的每個字對應一個固定長度的字向量。

詞向量:向量需表達出詞與詞之間的關係,兩種完全不同的語言,構造出的語言模型接近於相同,所以說詞向量與拼寫無關,要和語意相關,更關註上下文邏輯。

3 NLP 特徵工程的背景

傳統的模型如決策樹和神經網路都不能直接解決問題,只有依賴於優秀的演算法專家的特徵工程才能躲避特徵的維度災難。這是因為從本質上來說模型是一個概率統計的解決方案,通過樣本的輸入,對特徵嘗試進行解析,從而使用固定的範式(決策樹、神經網路的激活函數)及合適的權重擬合輸出。

這裡提出大部分模型的兩個短板:

1. 從輸入端說,模型並不能進行推理層面的特徵學習。

例如性別特徵在 onehot 後使用 0,1 作為輸入,此時特徵已經丟失了性別的含義,僅僅可能通過樣本的標籤反饋進行學習,獲得這個特徵 0 和 1 與標籤的相關性。也就是說沒有足夠的樣本,即使非常簡單明了的特徵模型也無法理解。

2. 從輸出端說,模型也不能很好的理解目標,無論是回歸還是分類模型,在模型內也僅僅是權重的分布。

比如一個模型基於一定樣本後能非常好的預測一個人的性別和年齡,但這個模型對於另一個場景需要對用戶的穿衣類型確毫無幫助(事實上這兩個問題十分相關),除非再提供同樣多的樣本才能幫助模型解決第二個場景。

對 nlp 領域有一定了解的朋友一定清楚,深度學習的 nlp 模型對於情感分析以及文章關鍵詞抓取已經較為成熟。word2vec 等技術也可以很好的解釋了模型對於文本確實有一定的理解力。那麼試想一下,我們為什麼不拋棄這麼多年的思維定式:模型一定需要二進位 01 表徵特徵和標籤嗎?為什麼模型不可以像正常人類一樣,閱讀一段自然語言給出答案呢?也就是特徵和目標自然語言化。

4 NLP 特徵工程的方法

在現在的神經網路 nlp 解決方案中,翻譯等領域還不成熟,也就是 seq2seq 並不能很好的吃透自然語言。所幸的是我們並不需要模型真的像人類一樣流利的閱讀能力,因為我們的特徵可以整理成相對規範的自然語言。lstm 比較適合文章整體的把握而 cnn 或 attentiong 更適合局部欄位的截取,所以一個 attention 層或 textcnn 都可以很好的解決特徵閱讀的功能。更加微妙的是,由於自然語料大量存在,模型可以一定程度理解特徵 , 如男性,女性等詞語似的特徵的理解更加容易。

由於缺失值如上可以直接忽略,所有目標的描述都可以緊湊寫入,完美解決稀疏問題。即使隨著業務變更,不需要修改模型結構,僅僅需要將新的特徵 append 到老的特徵後即可,由於 attention 或 cnn 的特性,連順序都可以忽略。使得稀疏特徵問題完美解決。

NLP 特徵工程,數倉建設困難大大降低,一個簡易的消息管道 匯聚的方式即可解決問題,訓練目標更加彈性,既然輸入特徵可以自然語言化,預測目標同樣可以是一段自然語言。

所有的自然語言 embedding 層共享權重,不同場景只要有一個良好的 fine-tune 方式加上每個場景若干個較少神經元的 fc 層(防止過擬合)。如:

場景目標 1

特徵:」王平 性別女性 年齡 20 歲 學曆本科 昨天上午收藏了 iphone7 」 目標:」購買 iphone7 」

標籤:0 (購買) 1 (不買)

場景目標 2

特徵:」王平 性別女性 年齡 20 歲 學曆本科 七天內購買了基金」 目標:」月收入」

標籤:0~10000 (線性結果)

這兩個場景只要用樣本 finetune fc 層即可,這讓模型需要的樣本大大減少。

理論上說,隨著場景增加,模型底層也會具有更加豐富的知識,維護多個場景多個模型反而更加輕鬆。

這樣的方法存在以下劣勢:

1. 訓練模型的過程更加複雜,需要一個對深度學習模型有較多經驗的工程師,在不同類型場景的樣本中使用一個合理的方式訓練 embedding 層及 attention 層。

2. 雖然模型可能吸收更多的行為特徵原始記錄,但依然需要人力考慮精簡特徵,否則會給模型帶來負擔。團隊中需要對業務有理解的分析人員在不同的場景可以篩選不同的特徵放入模型。

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


請您繼續閱讀更多來自 清無時空 的精彩文章:

Python圖形用戶界面-Tkinter
Python基礎之元組:基本操作