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