在自然語(yǔ)言處理(NLP)領(lǐng)域以蕴,如何對(duì)文本這種非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行表示是 NLP 的一個(gè)重要研究方向。
One-Hot
One-Hot Encoding
在說(shuō)文本 One-Hot Encoding 之前,先來(lái)說(shuō)一說(shuō)機(jī)器學(xué)習(xí)中的 One-Hot Encoding,兩者還是有一點(diǎn)點(diǎn)區(qū)別的。
One-Hot編碼澎埠,又稱獨(dú)熱編碼、一位有效編碼始藕。其方法是使用 N 位狀態(tài)寄存器來(lái)對(duì)N個(gè)狀態(tài)進(jìn)行編碼蒲稳,每個(gè)狀態(tài)都有它獨(dú)立的寄存器位氮趋,并且在任意時(shí)候,其中只有一位有效弟塞。舉個(gè)例子凭峡,假設(shè)我們有四個(gè)樣本(行),每個(gè)樣本有三個(gè)特征(列)决记,如圖:
上圖中我們已經(jīng)對(duì)每個(gè)特征進(jìn)行了普通的數(shù)字編碼:我們的feature_1有兩種可能的取值,比如是男/女倍踪,這里男用1表示系宫,女用2表示。那么one-hot編碼是怎么搞的呢建车?我們?cè)倌胒eature_2來(lái)說(shuō)明:
這里feature_2 有4種取值(狀態(tài))扩借,我們就用4個(gè)狀態(tài)位來(lái)表示這個(gè)特征,one-hot編碼就是保證每個(gè)樣本中的單個(gè)特征只有 1 位處于狀態(tài) 1缤至,其他的都是 0潮罪。
對(duì)于2種狀態(tài)、三種狀態(tài)领斥、甚至更多狀態(tài)都是這樣表示嫉到,所以我們可以得到這些樣本特征的新表示:
one-hot編碼將每個(gè)狀態(tài)位都看成一個(gè)特征。對(duì)于前兩個(gè)樣本我們可以得到它的特征向量分別為
NLP 中的 One-Hot Encoding
在 NLP 中月洛,在特征提取上屬于詞袋模型(bag of words)何恶。下面通過(guò)一個(gè)例子進(jìn)行解釋:
假設(shè)我們的語(yǔ)料庫(kù)中有三段話:
我愛中國(guó)
爸爸媽媽愛我
爸爸媽媽愛中國(guó)
我們首先對(duì)預(yù)料庫(kù)分離并獲取其中所有的詞,然后對(duì)每個(gè)此進(jìn)行編號(hào):
1 我嚼黔; 2 愛细层; 3 爸爸; 4 媽媽唬涧;5 中國(guó)
然后使用one hot對(duì)每段話提取特征向量:
因此我們得到了最終的特征向量為
我愛中國(guó) -> 1碎节,1捧搞,0,0钓株,1
爸爸媽媽愛我 -> 1实牡,1,1轴合,1创坞,0
爸爸媽媽愛中國(guó) -> 0,1受葛,1题涨,1偎谁,1
優(yōu)缺點(diǎn)分析
優(yōu)點(diǎn):一是解決了分類器不好處理離散數(shù)據(jù)的問(wèn)題,二是在一定程度上也起到了擴(kuò)充特征的作用(上面樣本特征數(shù)從3擴(kuò)展到了9)
缺點(diǎn):
首先纲堵,它是一個(gè)詞袋模型巡雨,不考慮詞與詞之間的順序(文本中詞的順序信息也是很重要的);
其次席函,它假設(shè)詞與詞相互獨(dú)立(在大多數(shù)情況下铐望,詞與詞是相互影響的);
最后茂附,它得到的特征是離散稀疏的正蛙。
Word2Vec
Word2Vec 來(lái)源于2013年的論文《Efficient Estimation of Word Representation in Vector Space》,它的核心思想是通過(guò)詞的上下文得到詞的向量化表示营曼,有兩種方法:CBOW(通過(guò)上下文的詞預(yù)測(cè)中心詞)乒验、Skip-gram(通過(guò)中心詞預(yù)測(cè)上下文的詞):
CBOW :
通過(guò)目標(biāo)詞的上下文的詞預(yù)測(cè)目標(biāo)詞,圖中就是取大小為2的窗口蒂阱,通過(guò)目標(biāo)詞前后兩個(gè)詞預(yù)測(cè)目標(biāo)詞锻全。具體的做法是,設(shè)定詞向量的維度d录煤,對(duì)所有的詞隨機(jī)初始化為一個(gè)d維的向量鳄厌,然后要對(duì)上下文所有的詞向量編碼得到一個(gè)隱藏層的向量,通過(guò)這個(gè)隱藏層的向量預(yù)測(cè)目標(biāo)詞辐赞,CBOW中的做法是簡(jiǎn)單的相加部翘,然后做一個(gè)softmax的分類,例如詞匯表中一個(gè)有V個(gè)不同的詞响委,就是隱藏層d維的向量乘以一個(gè)W矩陣( )轉(zhuǎn)化為一個(gè)V維的向量新思,然后做一個(gè) softmax 的分類。
由于 V 詞匯的數(shù)量一般是很大的赘风,每次訓(xùn)練都要更新整個(gè)W矩陣計(jì)算量會(huì)很大夹囚,同時(shí)這是一個(gè)樣本不均衡的問(wèn)題,不同的詞的出現(xiàn)次數(shù)會(huì)有很大的差異邀窃,所以論文中采用了兩種不同的優(yōu)化方法 「層次Softmax」和「負(fù)采樣」荸哟。
Skip-gram :
跟CBOW的原理相似,它的輸入是目標(biāo)詞瞬捕,先是將目標(biāo)詞映射為一個(gè)隱藏層向量鞍历,根據(jù)這個(gè)向量預(yù)測(cè)目標(biāo)詞上下文兩個(gè)詞,因?yàn)樵~匯表大和樣本不均衡肪虎,同樣也會(huì)采用多層softmax或負(fù)采樣優(yōu)化劣砍。
層次 Softmax:
由于單詞出現(xiàn)的頻率是不一樣的,所以用哈夫曼編碼構(gòu)建一個(gè)二叉樹扇救,出現(xiàn)頻率高的詞放在前面可以減少計(jì)算量刑枝,用哈夫曼編碼記錄路徑香嗓,例如圖中單詞2(w2w 2?
,規(guī)定左邊走是1装畅,右邊走是0)的哈夫曼編碼就是1110靠娱,在路徑上每到一個(gè)節(jié)點(diǎn)就是一個(gè)sigmoid的二分類,所以叫多層softmax掠兄。具體來(lái)說(shuō)每個(gè)節(jié)點(diǎn)處會(huì)有一個(gè)d維的向量參數(shù)θ
θ像云,每個(gè)單詞也是d維的向量xwx w,一個(gè)sigmoid的方程決定向左或者右走的概率蚂夕,往左走的概率是:
負(fù)采樣也是把模型變?yōu)槎倪壿嫽貧w苫费,每個(gè)詞對(duì)應(yīng)一個(gè)詞向量xwx w和詞的網(wǎng)絡(luò)參數(shù)θw
θ w?,每個(gè)詞附近有2c個(gè)詞双抽,通過(guò)負(fù)采樣,隨機(jī)采樣neg個(gè)反例闲礼,讓正例詞對(duì)目標(biāo)詞的詞向量和窗口內(nèi)詞的網(wǎng)絡(luò)參數(shù)的乘積盡可能的大牍汹,反例的盡可能小,是模型的訓(xùn)練目標(biāo)柬泽。例如在skip-gram中目標(biāo)詞A的詞向量是xAx A? 慎菲,它2c的窗口內(nèi)附近一個(gè)詞的網(wǎng)絡(luò)參數(shù)是θB
θ B ,讓這兩個(gè)的乘積盡可能的大锨并,σ(xTAθB)σ(x AT θ B)盡可能大露该,反例,隨機(jī)采樣出來(lái)的詞乘積盡可能小第煮。同理CBOW中是將2c個(gè)詞相加求平均解幼,然后與目標(biāo)詞的網(wǎng)絡(luò)參數(shù)相乘,也是讓窗口內(nèi)真實(shí)存在的詞乘積盡可能大包警,隨機(jī)采樣出的詞盡可能小撵摆。
負(fù)采樣的方式是根據(jù)詞出現(xiàn)的頻率進(jìn)行采樣,出現(xiàn)頻率越高害晦,越可能被采樣到特铝,原文中是根據(jù)出現(xiàn)頻率的 3/4次方然后做一個(gè)歸一化作為概率進(jìn)行采樣。
另外這篇論文的作者在2016年開源了一個(gè)文本分類的工具壹瘟,F(xiàn)astText鲫剿,與word2vec的原理非常類似,只不過(guò)在做文本分類時(shí)是一個(gè)有監(jiān)督的分類預(yù)測(cè)文本的label稻轨。另外加入n-gram的特征灵莲,對(duì)于英文,每個(gè)單詞前后加入標(biāo)識(shí)澄者,例如#good#笆呆,如果是3-gram的特征就是加入#go,goo,ood,od#请琳,可以解決一些oov的問(wèn)題(不在訓(xùn)練集中出現(xiàn)的生詞)和引入一些詞根的特征。對(duì)于中文“你愛我”和“我愛你”有完全不同的語(yǔ)義赠幕,用CNN或者h(yuǎn)ighway網(wǎng)絡(luò)處理的char embedding可以引入這部分的特征俄精。
[1] https://www.cnblogs.com/lianyingteng/p/7755545.html
版權(quán)聲明:本文為CSDN博主「xiayto」的原創(chuàng)文章,遵循CC 4.0 by-sa版權(quán)協(xié)議榕堰,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明竖慧。
原文鏈接:https://blog.csdn.net/xiayto/article/details/84730009