檢信智能ALLEMOTION OS 語(yǔ)義文本情感識(shí)別原理首先,當(dāng)然是文本預(yù)處理輸入文本,在將輸入文本轉(zhuǎn)化成向量之前,我們需要將標(biāo)點(diǎn)符號(hào)、括號(hào)、問(wèn)號(hào)等刪去,只留下字母、數(shù)字和字符, 同時(shí)將大寫(xiě)字母轉(zhuǎn)化為小寫(xiě),去除停用詞。效果如下圖然后就是將文本轉(zhuǎn)化為詞向量(即漢字要轉(zhuǎn)化為計(jì)算機(jī)能識(shí)別的數(shù)字類(lèi)(矩陣啥的))在將深度學(xué)習(xí)運(yùn)用于文本情感分析的過(guò)程中,我們需要考慮網(wǎng)絡(luò)模型的輸入數(shù)據(jù)的形式。在其他例子中,卷積神經(jīng)網(wǎng)絡(luò)(CNN)使用像素值作為輸入,logistic回歸使用一些可以量化的特征值作為輸入,強(qiáng)化學(xué)習(xí)模型使用獎(jiǎng)勵(lì)信號(hào)來(lái)進(jìn)行更新。通常的輸入數(shù)據(jù)是需要被標(biāo)記的標(biāo)量值。當(dāng)我們處理文本任務(wù)時(shí),可能會(huì)想到利用這樣的數(shù)據(jù)管道。但是,這樣的處理方式存在著很多問(wèn)題。我們不能像點(diǎn)積或者反向傳播那樣在一個(gè)字符串上執(zhí)行普通的運(yùn)算操作。所以在這里我們不能將字符串作為輸入,而是需要將文本轉(zhuǎn)換成計(jì)算機(jī)可識(shí)別的格式,由于計(jì)算機(jī)只能識(shí)別數(shù)字,因此我們可以將文本中的每一個(gè)詞都轉(zhuǎn)化為一個(gè)向量,也稱(chēng)作詞向量。詞向量是用一個(gè)向量的形式表示文本中的一個(gè)詞,通過(guò)這種轉(zhuǎn)化方式就能采用機(jī)器學(xué)習(xí)來(lái)把任何輸入量化成我們需要的數(shù)值表示,然后就可以充分利用計(jì)算機(jī)的計(jì)算能力,計(jì)算得出最終想要的結(jié)果,保證了操作的可行性。如圖所示,我們可以將上面的這段文本輸入數(shù)據(jù)轉(zhuǎn)化成一個(gè) 16*D 的輸入矩陣。我們希望創(chuàng)建這種詞向量的方式是可以表示單詞及其在上下文中意義的。例如,我們希望單詞 “l(fā)ove” 和 “adore” 這兩個(gè)詞在向量空間中是有一定的相關(guān)性的,因?yàn)樗麄兊囊馑枷嗨?,而且都在?lèi)似的上下文中使用,因此他們的空間相距距離會(huì)相對(duì)較小。而“l(fā)ove”、“adore”這兩個(gè)單詞與單詞“baseball”的意思有很大的不同,詞性也不相同,那么“l(fā)ove”、“adore”這兩個(gè)單詞的向量與單詞“baseball”的向量相距距離就會(huì)相對(duì)較大。單詞的向量表示也被稱(chēng)之為詞嵌入。特征提?。簽榱说玫竭@些詞嵌入,我們采用一個(gè)很著名的模型 “Word2Vec”?!癢ord2Vec”是近幾年很火的算法,它通過(guò)神經(jīng)網(wǎng)絡(luò)機(jī)器學(xué)習(xí)算法來(lái)訓(xùn)練N-gram 語(yǔ)言模型,并在訓(xùn)練過(guò)程中求出word所對(duì)應(yīng)的vector的方法。它是將詞表征為實(shí)數(shù)值向量的一種高效的算法模型,其利用深度學(xué)習(xí)的思想,可以通過(guò)訓(xùn)練,把對(duì)文本內(nèi)容的處理簡(jiǎn)化為 K 維向量空間中的向量運(yùn)算,而向量空間上的相似度可以用來(lái)表示文本語(yǔ)義上的相似。在這個(gè)模型中,每個(gè)詞的詞向量是根據(jù)上下文的語(yǔ)境來(lái)進(jìn)行推斷的,如果兩個(gè)詞在上下文的語(yǔ)境中可以被互換,那么這就表示這兩個(gè)詞的意思相似,詞性相似,那么他們的詞向量中相距距離就非常近。在自然語(yǔ)言中,上下文的語(yǔ)境對(duì)分析詞語(yǔ)的意義是非常重要的。簡(jiǎn)單來(lái)說(shuō),Word2Vec這個(gè)模型的作用就是從一大堆句子(以 Wikipedia 為例)中為每個(gè)獨(dú)一無(wú)二的單詞進(jìn)行建模,并且輸出一個(gè)唯一的向量,Word2Vec 模型的輸出被稱(chēng)為一個(gè)嵌入矩陣。該嵌入矩陣將包含訓(xùn)練語(yǔ)料庫(kù)中每個(gè)不同單詞的向量。 傳統(tǒng)上,嵌入矩陣可以包含超過(guò)300萬(wàn)個(gè)單詞向量。Word2Vec模型是通過(guò)對(duì)數(shù)據(jù)集中的每個(gè)句子進(jìn)行訓(xùn)練,在其上滑動(dòng)一個(gè)固定大小的窗口,并試圖預(yù)測(cè)窗口的中心詞,給出其他詞。使用損失函數(shù)和優(yōu)化程序,該模型為每個(gè)唯一字生成向量。這個(gè)訓(xùn)練過(guò)程的細(xì)節(jié)可能會(huì)變得有點(diǎn)復(fù)雜,所以我們現(xiàn)在要跳過(guò)細(xì)節(jié),但這里主要的一點(diǎn)是,任何深度學(xué)習(xí)方法對(duì)于NLP任務(wù)的輸入可能都會(huì)有單詞向量作為輸入。后面特征提取這一塊,應(yīng)該會(huì)將用word2vec提取的方式改為用doc2vec來(lái)提取,不過(guò)具體修改時(shí)間待定,得看我啥時(shí)候能將這一操作學(xué)會(huì)(哈哈噠)。Google 已經(jīng)幫助我們?cè)诖笠?guī)模數(shù)據(jù)集上訓(xùn)練出來(lái)了 Word2Vec 模型,它包括 1000 億個(gè)不同的詞,在這個(gè)模型中,谷歌能創(chuàng)建300萬(wàn)個(gè)詞向量,每個(gè)向量維度為 300。在理想情況下,我們將使用這些向量來(lái)構(gòu)建模型,但是因?yàn)檫@個(gè)單詞向量矩陣太大了(3.6G),因此在此次研究中我們將使用一個(gè)更加易于管理的矩陣,該矩陣由 GloVe 進(jìn)行訓(xùn)練得到。矩陣將包含 400000 個(gè)詞向量,每個(gè)向量的維數(shù)為 50。這里有用到一些.npy文件,是通過(guò)glove已經(jīng)轉(zhuǎn)好的,存為了npy文件。我們將導(dǎo)入兩個(gè)不同的數(shù)據(jù)結(jié)構(gòu),一個(gè)是包含 400000 個(gè)單詞的 Python 列表,一個(gè)是包含所有單詞向量值的 400000*50 維的嵌入矩陣。結(jié)果對(duì)比:CNN網(wǎng)絡(luò)層數(shù)包括:卷積層,池化層,全連接層。CNN神經(jīng)網(wǎng)絡(luò)模型運(yùn)用于文本情感分析時(shí)效果不如LSTM神經(jīng)網(wǎng)絡(luò)模型效果好,經(jīng)典的CNN模型在文本情感分析正確率只有71.2%,而對(duì)經(jīng)典進(jìn)行改進(jìn)之后,增加了卷積層和池化層,CNN模型的正確率得到了提高,但正確率也是只有77.25%,仍然比不上只用了一層LSTM網(wǎng)絡(luò)的正確率高。從結(jié)果對(duì)比中我們可以知道,CNN不光可以應(yīng)用于圖像處理領(lǐng)域,也能成功有效地對(duì)文本信息進(jìn)行分析,但LSTM在解決文本情感分析的問(wèn)題時(shí)效果要比CNN好。下面是一些運(yùn)行結(jié)果:訓(xùn)練數(shù)據(jù)集的結(jié)果嗯…,訓(xùn)練了800多個(gè)數(shù)據(jù),發(fā)現(xiàn)最高的時(shí)候準(zhǔn)確率在百分之七十幾,但是絕大多數(shù)穩(wěn)定在百分之五十左右,這個(gè)準(zhǔn)確度還是有點(diǎn)低的,后面加強(qiáng)學(xué)習(xí),改進(jìn)代碼,應(yīng)該可以將準(zhǔn)確度提高。(方法推薦:改改epoch可能會(huì)提高準(zhǔn)確度,模型收斂+準(zhǔn)確率)輸出詞列表的長(zhǎng)度,詞向量的維數(shù)維度的個(gè)數(shù)這個(gè)項(xiàng)目采用的數(shù)據(jù)集是IMDB數(shù)據(jù)集,這個(gè)數(shù)據(jù)集是一個(gè)關(guān)于電影評(píng)論的數(shù)據(jù)集,在這個(gè)數(shù)據(jù)集上做訓(xùn)練和測(cè)試。這個(gè)數(shù)據(jù)集包含 25000 條電影數(shù)據(jù),其中 12500 條正向數(shù)據(jù),12500 條負(fù)向數(shù)據(jù)。將其中的23000個(gè)文本評(píng)論作為訓(xùn)練集,將剩下的2000個(gè)文本評(píng)論作為測(cè)試集。下面為正面評(píng)價(jià)文本和負(fù)面評(píng)價(jià)文本示例總結(jié):將CNN與LSTM兩種神經(jīng)網(wǎng)絡(luò)模型應(yīng)用到了文本情感分析的問(wèn)題當(dāng)中,使用Word2Vec模型及它的子矩陣GloVe來(lái)將文本信息進(jìn)行預(yù)處理,轉(zhuǎn)換成了詞向量及向量矩陣,使用了IMDB數(shù)據(jù)集來(lái)對(duì)模型進(jìn)行訓(xùn)練,并用TensorFlow進(jìn)行建模、訓(xùn)練。版權(quán)聲明:本文為CSDN博主「醒了的追夢(mèng)人」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
2021-09-20