九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
深度學(xué)習(xí) | 利用詞嵌入對文本進行情感分析

詞嵌入(word embedding)是一種詞的類型表示,具有相似意義的詞具有相似的表示,是將詞匯映射到實數(shù)向量的方法總稱。詞嵌入是自然語言處理的重要突破之一。下面將圍繞什么是詞嵌入、三種詞嵌入的主要算法展開講解,并通過案例具體講解如何利用詞嵌入進行文本的情感分析。

什么是詞嵌入?

詞嵌入實際上是一類技術(shù),單個詞在預(yù)定義的向量空間中被表示為實數(shù)向量,每個單詞都映射到一個向量。舉個例子,比如在一個文本中包含“貓”“狗”“愛情”等若干單詞,而這若干單詞映射到向量空間中,“貓”對應(yīng)的向量為(0.1 0.2 0.3),“狗”對應(yīng)的向量為(0.2 0.2 0.4),“愛情”對應(yīng)的映射為(-0.4 -0.5 -0.2)(本數(shù)據(jù)僅為示意)。像這種將文本X{x12345……xn12345……yn },這個映射的過程就叫做詞嵌入。

之所以希望把每個單詞都變成一個向量,目的還是為了方便計算,比如“貓”,“狗”,“愛情”三個詞。對于我們?nèi)硕?,我們可以知道“貓”和“狗”表示的都是動物,而“愛情”是表示的一種情感,但是對于機器而言,這三個詞都是用0,1表示成二進制的字符串而已,無法對其進行計算。而通過詞嵌入這種方式將單詞轉(zhuǎn)變?yōu)樵~向量,機器便可對單詞進行計算,通過計算不同詞向量之間夾角余弦值cosine而得出單詞之間的相似性。

此外,詞嵌入還可以做類比,比如:v(“國王”)-v(“男人”)+v(“女人”)≈v(“女王”),v(“中國”)+v(“首都”)≈v(“北京”),當(dāng)然還可以進行算法推理。有了這些運算,機器也可以像人一樣“理解”詞匯的意思了。

詞嵌入主要算法

那么如何進行詞嵌入呢?目前主要有三種算法:

Embedding Layer

由于缺乏更好的名稱,Embedding Layer是與特定自然語言處理上的神經(jīng)網(wǎng)絡(luò)模型聯(lián)合學(xué)習(xí)的單詞嵌入。該嵌入方法將清理好的文本中的單詞進行one hot編碼(熱編碼),向量空間的大小或維度被指定為模型的一部分,例如50、100或300維。向量以小的隨機數(shù)進行初始化。Embedding Layer用于神經(jīng)網(wǎng)絡(luò)的前端,并采用反向傳播算法進行監(jiān)督。

被編碼過的詞映射成詞向量,如果使用多層感知器模型MLP,則在將詞向量輸入到模型之前被級聯(lián)。如果使用循環(huán)神經(jīng)網(wǎng)絡(luò)RNN,則可以將每個單詞作為序列中的一個輸入。

這種學(xué)習(xí)嵌入層的方法需要大量的培訓(xùn)數(shù)據(jù),可能很慢,但是可以學(xué)習(xí)訓(xùn)練出既針對特定文本數(shù)據(jù)又針對NLP的嵌入模型。

Word2Vec(Word to Vector)/ Doc2Vec(Document to Vector)

Word2Vec是由Tomas Mikolov 等人在《Efficient Estimation of Word Representation in Vector Space》一文中提出,是一種用于有效學(xué)習(xí)從文本語料庫嵌入的獨立詞語的統(tǒng)計方法。其核心思想就是基于上下文,先用向量代表各個詞,然后通過一個預(yù)測目標(biāo)函數(shù)學(xué)習(xí)這些向量的參數(shù)。Word2Vec 的網(wǎng)絡(luò)主體是一種單隱層前饋神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)的輸入和輸出均為詞向量,其主要訓(xùn)練的是圖中的紅圈部分。

該算法給出了兩種訓(xùn)練模型,CBOW (Continuous Bag-of-Words Model) 和 Skip-gram (Continuous Skip-gram Model)。CBOW將一個詞所在的上下文中的詞作為輸入,而那個詞本身作為輸出,也就是說,看到一個上下文,希望大概能猜出這個詞和它的意思。通過在一個大的語料庫訓(xùn)練,得到一個從輸入層到隱含層的權(quán)重模型;而Skip-gram它的做法是,將一個詞所在的上下文中的詞作為輸出,而那個詞本身作為輸入,也就是說,給出一個詞,希望預(yù)測可能出現(xiàn)的上下文的詞,2-gram比較常用。

通過在一個大的語料庫訓(xùn)練,得到一個從輸入層到隱含層的權(quán)重模型。給定xx預(yù)測xxx的模型的輸入都是詞的向量,然后通過中間各種深度學(xué)習(xí)DL的CNN或RNN模型預(yù)測下一個詞的概率。通過優(yōu)化目標(biāo)函數(shù),最后得到這些詞匯向量的值。Word2Vec雖然取得了很好的效果,但模型上仍然存在明顯的缺陷,比如沒有考慮詞序,再比如沒有考慮全局的統(tǒng)計信息。

Doc2Vec與Word2Vec的CBOW模型類似,也是基于上下文訓(xùn)練詞向量,不同的是,Word2Vec只是簡單地將一個單詞轉(zhuǎn)換為一個向量,而Doc2Vec不僅可以做到這一點,還可以將一個句子或是一個段落中的所有單詞匯成一個向量,為了做到這一點,它只是將一個句子標(biāo)簽視為一個特殊的詞,并且在這個特殊的詞上做了一些處理,因此,這個特殊的詞是一個句子的標(biāo)簽。如圖所示,詞向量作為矩陣W中的列被捕獲,而段落向量作為矩陣D中的列被捕獲。

GloVe(Global Vectors for Word Representation)

GloVe是Pennington等人開發(fā)的用于有效學(xué)習(xí)詞向量的算法,結(jié)合了LSA矩陣分解技術(shù)的全局統(tǒng)計與word2vec中的基于局部語境學(xué)習(xí)。

LSA全稱Latent semantic analysis,中文意思是隱含語義分析,LSA算是主體模型topic model的一種,對于LSA的直觀認(rèn)識就是文章里有詞語,而詞語是由不同的主題生成的,比如一篇文章包含詞語:計算機,另一篇文章包含詞語:電腦,在一般的向量空間來看,這兩篇文章不相關(guān),但是在LSA看來,這兩個詞屬于同一個主題,所以兩篇文章也是相關(guān)的。該模型不依賴本地上下文,是對全局字詞同現(xiàn)矩陣的非零項進行訓(xùn)練,其中列出了給定語料庫中單詞在彼此間共同出現(xiàn)的頻率。

從本質(zhì)上說,GloVe是具有加權(quán)最小二乘法目標(biāo)的對數(shù)雙線性模型。字詞共現(xiàn)概率的比率又編碼成某種形式的潛在可能意義。例如,以下是基于60億詞匯語料庫的各種關(guān)于冰和蒸汽的詞的共現(xiàn)概率:

如上表所示,“ice(冰)”與“solid(固體)”共現(xiàn)的可能性比“gas(氣體)”大,“steam(蒸汽)”與“gas(氣體)”共現(xiàn)的可能性比“solid(固體)”大,從而很輕易地可以區(qū)別出二者區(qū)別。而“ice(冰)”和“steam(蒸汽)”都與“water(水)”的共現(xiàn)概率較大,都與“fashion(時尚)”共現(xiàn)概率很小,因此無法區(qū)別“ice”和“steam”。只有在可能性的比率中(圖表第三行),才會將像“water”和“fashion”這樣的非區(qū)別性詞匯(non-discriminative)的噪音相抵消,可能性比率越大(遠(yuǎn)大于1)的詞與“ice”特性相關(guān)聯(lián),可能性比率越?。ㄟh(yuǎn)小于1)則與“steam”的特性相關(guān)聯(lián)。以這種方式,可能性比率編碼了許多粗略形式的意義,這些意義與熱力學(xué)相位的抽象概念相關(guān)聯(lián)。

GloVe的訓(xùn)練目標(biāo)是學(xué)習(xí)詞向量,使得它們的點積等于“共現(xiàn)概率”的對數(shù),由于比率的對數(shù)等于對數(shù)差,這個目標(biāo)將共現(xiàn)概率的比率與詞向量空間中的向量相關(guān)聯(lián),由于這些比率可以編碼某種形式的意義,所以該信息也被編碼為向量差異。所以所得到的詞向量在單詞類比任務(wù)上執(zhí)行的很好。

詞嵌入應(yīng)用案例

當(dāng)您在自然語言處理項目中使用詞嵌入時,您可以選擇自主學(xué)習(xí)詞嵌入,當(dāng)然這需要大量的數(shù)百萬或數(shù)十億文本數(shù)據(jù),以確保有用的嵌入被學(xué)習(xí)。您也可以選擇采用開源的預(yù)先訓(xùn)練好的詞嵌入模型,研究人員通常會免費提供預(yù)先訓(xùn)練的詞嵌入,例如word2vec和GloVe詞嵌入都可以免費下載。

下面我們具體來看一下如何在KNIME中利用詞嵌入進行情感分析,整體流程如下圖所示:

首先,我們從IMDb網(wǎng)站上獲取關(guān)于《Girlfight》這部影片的2000條評論,儲存為.CSV格式的文件,利用File Reader這個節(jié)點把文本讀入。

然后我們要將文件中的字符串轉(zhuǎn)化成文檔,把文件中除了文檔的列都過濾掉,在結(jié)構(gòu)圖中是Document Creation這個節(jié)點,這是一個節(jié)點合集,點開包含三個子節(jié)點:

接下來是進行文本的詞向量訓(xùn)練,我們預(yù)設(shè)置詞向量維度為200維,并通過上文所介紹的Doc2Vec算法將2000條評論文本轉(zhuǎn)換成2000個向量數(shù)值,獲得如下圖所示的2000個詞向量:

另一方面,在進行詞向量訓(xùn)練的同時導(dǎo)入預(yù)先設(shè)定的情感分類標(biāo)簽:

然后,在Joiner節(jié)點處,帶有”POS”或”NEG”標(biāo)簽的情感詞典與訓(xùn)練好的2000條詞向量進行匹配,使得2000條詞向量分別貼上”POS”或”NEG”標(biāo)簽,這樣就獲得了2000條詞向量的標(biāo)簽數(shù)據(jù),以便后面訓(xùn)練情感分析模型。

接下來,由于200維的向量數(shù)據(jù)量太大,通過主成分分析PCA算法將200維的數(shù)據(jù)進行降維處理轉(zhuǎn)化為二維向量,以便對其分類效果進行可視化,通過顏色標(biāo)記,最終2000條評論的情感分析情況如圖所示:

從圖上看,POS和NEG的情感正負(fù)標(biāo)簽很明顯,分類比較理想。

然后,我們開始訓(xùn)練模型。先將數(shù)據(jù)進行分區(qū),訓(xùn)練集和測試集,七三開分為兩部分,一部分是訓(xùn)練數(shù)據(jù),一部分是檢驗數(shù)據(jù)。

訓(xùn)練模型為Random Forest模型,顧名思義,就是用隨機的方式建立一個“森林”,“森林”里面有很多的決策樹組成,隨機森林的每一顆決策樹之間是沒有關(guān)聯(lián)的。在得到森林之后,當(dāng)有一個新的輸入樣本進入的時候,就讓森林中的每一顆決策樹分別進行一下判斷,看看這個樣本該屬于哪一類(對于分類算法),然后看看哪一類被選擇最多,就預(yù)測這個樣本為那一類。最終訓(xùn)練出來的Random Forest模型如下圖所示:

最后,通過檢測數(shù)據(jù)的測試,我們得出該模型的精度為95.5%,由此可見擬合的模型較為精確:

通過這個案例的練習(xí),我們可以更好的理解詞嵌入技術(shù)和算法對自然語言處理NLP的新思路,也是深度學(xué)習(xí)技術(shù)的革命性體現(xiàn)。

沈浩老師

——————
中國傳媒大學(xué)新聞學(xué)院教授、博士生導(dǎo)師
中國傳媒大學(xué)調(diào)查統(tǒng)計研究所所長
_2001
數(shù)藝智訓(xùn)
DAtraining
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
機器學(xué)習(xí):什么是文本分類?
情感分析的新方法——基于Word2Vec/Doc2Vec/Python
今天來聊一聊什么是文本嵌入的經(jīng)典模型
fastText:極快的文本分類工具
語義分析的一些方法(中篇) | 數(shù)盟
Word2Vec:自然語言處理中的骨干算法
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服