張世宏 賴德剛 黃婷婷
自然語言處理(NLP)的核心目標是使計算機能夠理解和處理人類語言,其中情感分析是NLP領域的重要分支,其主要用于解讀和理解文本中的情感趨勢,以實現對文本的情感分類或預測。早期采用簡單RNN結構的情感分析算法在處理長期依賴關系上常面臨梯度消失或梯度爆炸等問題,因此在處理復雜任務時其性能受到了限制。現在,長短時記憶網絡(LSTM)在情感分析中展現出了強大的性能,提高了情感分析任務的準確率。雙向循環神經網絡和注意力機制也獲得了成功應用。在實際的情感分析應用中,社交媒體分析、電影評論分析和產品評論分析等方面都具有許多研究價值。本文通過數據預處理技術,將原始文本轉換為RNN模型可接受的形式,使用訓練數據進行RNN模型的訓練和參數優化,并通過測試數據對訓練好的模型進行評估,計算F1分數、準確率等性能指標。本研究的目標是探索基于RNN的情感分析算法在電影評論中的應用,利用RNN模型來分析文本情感,為相關領域的應用和研究提供有價值的參考資料。
本文算法設計思路源于我們處理時間序列數據的方式,可以有效地掌握在序列數據中出現的時間序列信息和上下文關聯性。采用遞歸神經網絡(RNN)實現,其實現過程中需要為訓練準備好輸入數據和相應的標簽,并選用合適的循環單元類型,如基礎循環單元、長短期記憶單元或門控循環單元。在編譯模型之前,需要設定損失函數、優化器和評價指標,常用的損失函數是交叉熵損失函數,優化器可以選擇Adam或SGD,評價指標可以選擇準確率。在訓練階段,通過反向傳播算法更新模型參數,讓模型逐漸學習并掌握輸入序列的模式和規律,還可以使用驗證集來評估模型和預防過擬合。模型訓練完成后,可以用測試集對模型進行最后的評估,根據任務需求,預測結果可以進行后續的分析和應用。在實際操作中,還可以根據任務特性和需求進行適當的調整和優化,如添加正則化處理、使用dropout等技術來提升模型的泛化能力和預防過擬合。此外,還可以結合其他的技術和模型進行優化,如注意力機制、雙向RNN等。RNN的核心概念包括前向傳播公式、輸出公式和隱藏狀態傳遞公式,其中隱藏狀態可以看作是模型對過去輸入序列的記憶或表示。通過隱藏狀態的傳遞或更新,RNN可以在時間序列上循環傳遞,同時還可以結合反向傳播算法,計算損失函數對各個參數的梯度,從而進行參數更新和模型優化。在具體實現中,還需要選擇和配置具體的激活函數、損失函數等。RNN實現過程如圖1所示。

情感分析算法的設計是本文的核心內容之一,本研究采用基于遞歸神經網絡的方法來實現情感分析,算法設計主要包括以下步驟:
數據準備:研究主要集中在IMDB的電影評論數據集上。數據集中的文本數據已經經過標記,標記對應不同的情感類別,例如正面、負面、中立等。通過這些數據準備,可以為情感分析算法提供準備好的數據集,方便后續的模型訓練和評估。
特征提?。褐饕菍㈦娪霸u論的文本數據轉換為適用于RNN處理的特征表示。它包括五個主要部分:讀取測試數據,創建和適配分詞器,將文本數據轉換為序列,序列填充以及標簽獨熱編碼和數據劃分。通過讀取名為電影評論Test.txt的文件獲取測試數據。使用分詞器Tokenizer將文本轉換成數值型數據,并構建詞匯表。使用適配過的分詞器將訓練數據和測試數據的文本轉換為數值序列,序列長度被填充到100,以便RNN處理。標簽也被轉換成獨熱編碼形式。隨機劃分訓練數據成訓練集和驗證集,確保模型泛化性能。整個程序綜合了分詞、填充、編碼和劃分等技術,為情感分析任務提供了良好的數據基礎。
構建RNN模型:本文在設計上采用了循環神經網絡(RNN)中的長短時記憶網絡(LSTM),總共實現分三步完成。第一步,通過Keras的Sequential()方法創建一個空的序貫模型,然后添加一層Embedding層作為詞嵌入層,將詞的整數表示轉換為密集向量。Embedding層的參數確定了輸入數據的最大詞匯量、詞嵌入的維度和輸入序列的長度。第二步,添加兩個LSTM層,每個LSTM層都有32個隱藏單元,并通過dropout參數設置隨機失活的概率。第一個LSTM層設置return_sequences=True,以便將每個時間步的隱藏狀態傳遞給下一個LSTM層。緊接著,添加一個全連接層(Dense層),它有64個神經元,并使用ReLU激活函數。然后添加一個Dropout層,以防止過擬合。第三步,添加輸出層,它是一個全連接層,有2個神經元對應兩種情感類別,并使用softmax激活函數輸出預測概率。這個RNN模型結合了LSTM和dropout等技術,能夠在處理文本情感分析任務時更好地解決梯度消失和爆炸問題,提高模型的準確性和泛化性能。
模型訓練:使用標記的訓練數據對RNN模型進行訓練。在訓練過程中,將文本序列輸入RNN模型,通過優化算法(如隨機梯度下降)調整模型參數,提高對情感類別的預測能力。使用model.compile()函數配置模型的訓練過程,選擇分類交叉熵作為損失函數,優化器選擇Adam,并將準確率作為評估指標。通過model.fit()函數進行模型訓練,使用訓練數據的特征和標簽進行訓練,并提供驗證數據來評估模型性能。進行20輪訓練,每輪使用64個樣本進行訓練。model.fit()函數返回一個History對象,其中包含每個epoch的訓練損失、驗證損失、訓練準確率和驗證準確率等信息。這樣的訓練過程能夠使模型逐漸優化參數,提高對情感類別的預測準確性。
模型評估:使用預留的測試數據集對訓練好的RNN模型進行評估。常用的評估指標包括準確率、精確率、召回率和F1分數等,用于衡量模型在情感分析任務上的性能。設計了model.evaluate()函數用于評估模型的性能,該函數將模型對測試數據進行預測,并將預測結果與真實的標簽進行比較,計算出損失值和指定的評估指標。這個過程不會改變模型的參數,只是用于衡量模型的性能。model.evaluate()函數返回的是一個包含損失值和所有評估指標值的列表。有兩個返回值:test_loss和test_ accuracy,分別代表在測試集上的損失值和準確率。最后,將這兩個值輸出,以便查看模型在測試集上的表現。這兩個指標反映了模型在未見過的數據上的預測能力,可以幫助我們判斷模型的泛化能力。
(一)初始方案

隨機選擇10個樣本,輸入初始化RNN模型進行訓練,得到在訓練過程中準確率和損失值。從圖2、圖3可見測試集上的損失值為0.6893,準確率為0.5122,以上數據可以看出損失值較高且準確率較低。模型的損失值較高表示模型對于某些樣本的預測存在較大的誤差,準確率較低表示模型在預測時存在一定程度的誤分類。效果并不理想,需要對模型進行進一步優化。
(二)優化方案
本文提出了一種優化方案,該方案采用本文情感分析算法,在模型的最后添加了一個具有64個神經元的全連接層,并使用ReLU激活函數。全連接層可以進一步提取抽象的特征表示,并增加模型的非線性能力。更多的神經元可以提供更豐富的特征表達能力,有助于提高模型的性能。



從圖4可以看出,輸入與初始方案相同的樣本,優化后模型的測試損失為0.4652,表示模型在測試集上的平均損失較低。較低的損失值意味著模型能夠更準確地預測樣本的標簽。模型的測試準確率為80.49%,表示在測試集上能夠正確預測80.49%的樣本標簽。結果表明,經過優化的模型在測試集上取得了較好的性能。然而,準確率和損失值并不能完全描述模型的性能,因此還需要綜合考慮其他指標和評估方法,如精確率、召回率、F1值等,以全面評估模型的性能和可靠性。從圖5可以看出,混淆矩陣的每個方塊提供了關于模型預測結果的信息,從而可以計算出多個評估指標。本模型精確率為89.56%,表示有約89.56%是真正的正類樣本。模型召回率為75.47%,意味著模型能夠正確地識別出約75.47%的正類樣本。模型F1值為81.98%,F1值越高,說明模型在預測和識別上的綜合表現越好。經過優化后的結果要遠高于初始模型。
本研究基于遞歸神經網絡(RNN)實現了情感分析算法,并在IMDB電影評論數據集上進行了實驗和優化。經過多次迭代和參數調整,得到了優化后的RNN模型,并通過評估指標對其性能進行了評估。本文在初始模型的基礎上增加了一個具有64個神經元的全連接層,并使用了ReLU激活函數。經過優化后,模型的測試準確率提高到80.49%,損失值下降到0.4652。通過混淆矩陣的分析,發現模型對于負面評論的預測準確性較低。總之,通過持續改進算法和模型,我們可以更好地理解和分析人類的情感傾向,為社會輿情分析、市場調研、用戶反饋分析等領域提供有價值的信息和洞察。
作者單位:張世宏、賴德剛 中國電子科技集團公司第三十研究所
黃婷婷 成都工百利自動化設備有限公司