潘紅麗
(西安航空學(xué)院外國語學(xué)院,陜西西安 710077)
隨著人們在互聯(lián)網(wǎng)上發(fā)布的信息越來越多,如何篩選其中的有用信息尤為重要,傳統(tǒng)的文本分析效果有限,無法及時處理大量數(shù)據(jù)。因此,建立有效的英語情感分析體系[1]變得日趨重要。
自然語言處理(NLP)旨在使用計算資源從語言數(shù)據(jù)(即語音和文本)中提取重要特征,以結(jié)構(gòu)化形式對數(shù)字化帶注釋的語言數(shù)據(jù)進(jìn)行處理,以提供可供機(jī)器分析使用的信息。近年來,深度學(xué)習(xí)算法已成功解決了各個領(lǐng)域的問題,例如圖像分類、機(jī)器翻譯、語音識別、文本到語音的生成以及其他相關(guān)領(lǐng)域,這些領(lǐng)域的進(jìn)步促使其通過計算機(jī)分析方法了解、分析人類情感成為可能。
文中基于遞歸神經(jīng)網(wǎng)絡(luò)(RNN)網(wǎng)絡(luò),設(shè)計了一種英語語義分析方法。RNN[2]可以提取文本中所有單詞的信息,長短期記憶(LSTM)神經(jīng)網(wǎng)絡(luò)作為一種RNN 網(wǎng)絡(luò)結(jié)構(gòu)[3],能夠準(zhǔn)確識別文本數(shù)據(jù)的長短模式,精準(zhǔn)識別真實(shí)隨機(jī)的英語文本包含的情感信息。
單詞之間的拓?fù)潢P(guān)系對文本情感分析至關(guān)重要,基于遞歸神經(jīng)網(wǎng)絡(luò)(RNN)的語言模型較為適合處理文本序列數(shù)據(jù)。RNN 由3 個模塊組成,分別是輸入層、隱藏層與輸出層[4]。在RNN 模型中,時間輸入層與時間隱藏層匯總為一個新的輸入層,同時也作為時間t處的隱藏層。RNN 的循環(huán)結(jié)構(gòu)可使隱藏層保留先前單詞中的所有信息,以提高識別單詞之間順序關(guān)系的能力[5]。
RNN 模型通過時間優(yōu)化算法(BPTT)進(jìn)行的反向傳播中存在過多展開狀態(tài)層,這會導(dǎo)致訓(xùn)練時歷史信息梯度衰減[6]。文中采用LSTM 來避免模型對詞語的長期依賴,其結(jié)構(gòu)如圖1 所示。
圖1 單個單元的LSTM存儲模塊
LSTM 的計算過程主要包括4 個步驟:①計算忘記門與輸入門的值;②更新LSTM 單元的狀態(tài)[7];③計算輸出門的值;④更新整個單元的輸出。詳細(xì)步驟如下公式所示,輸入門由式(1)計算得出。
忘記門由式(2)計算得出:
忘記門單元狀態(tài)由式(3)計算得出:
輸出門由式(4)計算得出:
輸出門單元狀態(tài)由式(5)計算得出:
在上述函數(shù)中,s(·)是Sigmoid 型函數(shù)[8],h(·)是Tanh 函數(shù)。
具有LSTM 的RNN 可看作是傳統(tǒng)RNN 語言模型的改進(jìn)模型,其將文本語句作為輸入序列來計算每個模型的誤差。但當(dāng)文本序列信息較長時,帶有LSTM 的RNN 模型可以有效克服序列信息衰減問題[9]。
對于英語句子,首先應(yīng)用分詞標(biāo)準(zhǔn)CRF++-0.58將句子轉(zhuǎn)換為分詞;然后對LSTM 進(jìn)行正向計算,按照從左到右的順序依次搜索句子中的分詞,輸出單詞在概率時間t之前的單詞序列概率[10];最終通過所有單詞的聯(lián)合分布概率來測量句子的誤差值,較高的聯(lián)合分配概率可以有效降低文本語句的錯誤值。
在訓(xùn)練階段,將訓(xùn)練數(shù)據(jù)根據(jù)其情感標(biāo)簽分為多個種類,針對每個種類的數(shù)據(jù),分別訓(xùn)練LSTM 模型,并產(chǎn)生多個LSTM 模型,將每個LSTM 模型用于相應(yīng)的情感評論。為了預(yù)測新輸入評論的情感偏向,在訓(xùn)練階段獲得的LSTM 模型將在新輸入評論上進(jìn)行評估,并給出檢測誤差值。誤差值最小的模型被指定為新輸入評論的情感類別。
訓(xùn)練階段的主要過程如圖2 所示。其中,數(shù)據(jù)分為3 類:積極、消極與中性。
圖2 情感偏向分類流程圖
與傳統(tǒng)的RNN 語言模型相比,具有LSTM 的RNN 可以完全覆蓋較長的句子[11],其在多次驗(yàn)證實(shí)驗(yàn)中表現(xiàn)均優(yōu),尤其是對于帶有連接詞的英語語句結(jié)構(gòu)。
文中使用交叉熵?fù)p失加L2 調(diào)節(jié)懲罰作為優(yōu)化目標(biāo),并使用小型批處理SGD 的優(yōu)化程序Ada delta將優(yōu)化目標(biāo)最小化[12]。使用Ada delta而不是Adam 進(jìn)行最小化優(yōu)化的原因是,實(shí)驗(yàn)發(fā)現(xiàn)通過Ada delta 優(yōu)化的LSTM-RNN 可以實(shí)現(xiàn)更高的穩(wěn)定性,性能較Adam 更優(yōu)[13]。實(shí)驗(yàn)相關(guān)的參數(shù)詳細(xì)信息如表1所示。
表1 RNN網(wǎng)絡(luò)訓(xùn)練參數(shù)
自然語言推理(NLI)的目的是建立前提句子與相應(yīng)假設(shè)句子之間的語義關(guān)系,語義關(guān)系包括必然、中立或矛盾。文中使用基準(zhǔn)斯坦福自然語言推理(SNLI)數(shù)據(jù)集[14]比較了不同的模型。
遵循Bowman 的標(biāo)準(zhǔn)程序,文中推出了兩個句子編碼模型,分別帶有前提句子與假設(shè)句子的綁定參數(shù)。給定假設(shè)前提的輸出編碼sp與sh,其關(guān)系可表示為sp、sh、sp-sh與sp?sh的串聯(lián)。將其饋送到300 D 完全連接層中,然后反饋入3 個單元的輸出層與Softmax,用于計算NHI 模型3 種關(guān)系的概率分布。
文中使用基于LSTM 的RNN 網(wǎng)絡(luò)需要帶有注釋的語言數(shù)據(jù)集,為了訓(xùn)練、開發(fā)、培訓(xùn)與評估該系統(tǒng),從各大英文網(wǎng)站收集相關(guān)數(shù)據(jù),使用Beautiful Soup 2開發(fā)了一個自定義搜尋器[15],使用可擴(kuò)展Python 庫從指定網(wǎng)站提取與解析結(jié)構(gòu)化信息。
與大多數(shù)NLP 系統(tǒng)相同,文中首先使用數(shù)據(jù)預(yù)處理簡化輸入,并以適合計算機(jī)處理消耗的運(yùn)算資源減少特征空間。文中直接在帶注釋的原始數(shù)據(jù)上進(jìn)行文本預(yù)處理:
1)刪除URL:眾多新聞文本均包含指向相關(guān)信息的鏈接,由于這些URL 不傳達(dá)任何真實(shí)含義,因此將其刪除。
2)刪除標(biāo)點(diǎn)符號:由于每個單詞均以一行空格隔開,標(biāo)點(diǎn)符號不表示任何實(shí)際含義,因此將其刪除。
3)文本分割:文本分割是將每個有意義的實(shí)體單位(如單詞、短語、句子)分開的處理方法。由于需要將句子中的每個單詞及其相關(guān)的含義標(biāo)簽排成一行,因此使用了Python 字符串拆分功能來標(biāo)記句子中的單詞。
類似于監(jiān)督式機(jī)器學(xué)習(xí)方法,文中將數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)[16]。然后使用訓(xùn)練數(shù)據(jù)對模型進(jìn)行訓(xùn)練,以學(xué)習(xí)網(wǎng)絡(luò)的相關(guān)參數(shù),其次,將測試數(shù)據(jù)輸入模型以評估性能。因?yàn)閿?shù)據(jù)集的大小有限,所以此處不使用驗(yàn)證數(shù)據(jù)。同時,由于系統(tǒng)考慮了與語言無關(guān)的注釋方案,因此可以使用K-fold 驗(yàn)證來提高數(shù)據(jù)集的性能。
TensorFlow 2 是一個用于數(shù)值計算與大規(guī)模機(jī)器學(xué)習(xí)的開源庫,其支持絕大多數(shù)機(jī)器學(xué)習(xí)、深度學(xué)習(xí)模型及算法,可以通過通用接口使用,文中選取其作為RNN 網(wǎng)絡(luò)的后端工作。Theano 4 是執(zhí)行大量運(yùn)算工作的Python 庫,支持計算、優(yōu)化與高維數(shù)組有關(guān)的復(fù)雜數(shù)學(xué)計算,其也被用作后端來改善網(wǎng)絡(luò)含義背景計算。Scikit-Learn5 Python 庫具有簡潔、統(tǒng)一以及流線型的API,并支持一系列機(jī)器學(xué)習(xí)算法的實(shí)例化,文中還使用其來處理與簡化網(wǎng)絡(luò)。
為訓(xùn)練模型,文中使用了4 種類型的數(shù)據(jù):網(wǎng)站評論、購物網(wǎng)站、旅行評論網(wǎng)站與英文電影評論??紤]到模型訓(xùn)練的錯誤率以及計算速度,文中采用2013 年Graves 的開源C++代碼庫,在具有4 GB RAM、Intel Core2 Quad 的個人計算機(jī)上進(jìn)行測試,GPU為NVIDIA 2 GB RAM GTX 560。實(shí)驗(yàn)流程如圖3所示。
圖3 驗(yàn)證實(shí)驗(yàn)流程
經(jīng)過必要的數(shù)據(jù)清理后,購物網(wǎng)站的評論被手動分為3 類:積極情緒、中性情緒與消極情緒。樣本數(shù)據(jù)集的總數(shù)為39 000,3 個類別的比例為1∶1∶1。選擇每個種類的3 000 個隨機(jī)樣本作為測試集,而其他樣本用作訓(xùn)練集。評論分為兩類:積極情緒與消極情緒,積極情緒訓(xùn)練數(shù)據(jù)的數(shù)量為19 493;消極情緒訓(xùn)練數(shù)據(jù)的數(shù)量為23 955,積極情緒測試數(shù)據(jù)的數(shù)量為10 000;消極情緒測試數(shù)據(jù)的數(shù)量為8 000。
此外,將英文旅行網(wǎng)站與英文電影評論網(wǎng)站的評論手動分為兩類:積極情緒與消極情緒。對于來自旅行網(wǎng)站的數(shù)據(jù)集,每個類別的訓(xùn)練數(shù)據(jù)數(shù)量為6 000,每個類別的測試數(shù)據(jù)數(shù)量為2 000。英文電影評論數(shù)據(jù)中,訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)的數(shù)量均為12 500。
RNN 模型中展開狀態(tài)層的數(shù)量會影響訓(xùn)練的準(zhǔn)確性,更多的展開狀態(tài)層通常會帶來更優(yōu)的結(jié)果,但同時也會帶來較高的計算復(fù)雜性。LSTM 結(jié)構(gòu)的先天優(yōu)勢使其需要更少的展開狀態(tài)層數(shù),即可獲得與常規(guī)RNN 相當(dāng)?shù)慕Y(jié)果。因此在實(shí)驗(yàn)中,將模型中的展開狀態(tài)層數(shù)設(shè)置為10。
在每個數(shù)據(jù)集上,同時使用具有LSTM 的RNN與常規(guī)RNN。情緒分析結(jié)果如表2、表3 所示。
表2 LSTM-RNN網(wǎng)絡(luò)識別結(jié)果
表3 傳統(tǒng)RNN識別結(jié)果
分析表2 與表3 結(jié)果可知,與傳統(tǒng)RNN 相比,帶有LSTM 的RNN 可以帶來更優(yōu)的準(zhǔn)確率與召回率。具體而言,具有LSTM 的RNN 可以識別較多結(jié)構(gòu)為“Although…But…”“,Not only…but also…”、“But”等的文本實(shí)例,因此,LSTM-RNN 相較傳統(tǒng)RNN 更優(yōu)地標(biāo)識出了一些長語句。
4 種不同模型在不同長度的英文句子上的表現(xiàn)如圖4 所示。在大多數(shù)評論句子的長度范圍(5,12)內(nèi),LSTM-RNN 明顯優(yōu)于其他模型。同時,對于在(25,38)范圍內(nèi)稍長的句子或段落,LSTM-RNN 也顯示出較為理想的性能。
圖4 細(xì)粒度情感分析準(zhǔn)確性與句子長度的關(guān)系
文中提出了一種基于改進(jìn)RNN 的語言模型LSTM,其涵蓋了所有歷史序列信息,性能優(yōu)于常規(guī)RNN,可用于實(shí)現(xiàn)英文文本情感屬性的多分類,且較傳統(tǒng)的RNN 可以更準(zhǔn)確地識別出文本情感屬性。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練工作需要強(qiáng)大的理論支撐與計算機(jī)硬件性能支持,后續(xù)的工作重點(diǎn)將是如何設(shè)計模板化的神經(jīng)網(wǎng)絡(luò)訓(xùn)練方案,使用云端服務(wù)器訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型。