中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

使用 RNN 進(jìn)行情感分析的初學(xué)者指南

2018-06-23    來源:

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

原標(biāo)題 Advances in Semantic Textual Similarity,作者為 Google AI 的軟件工程師與技術(shù)主管 Yinfei Yang。

原文鏈接:https://towardsdatascience.com/a-beginners-guide-on-sentiment-analysis-with-rnn-9e100627c02e

 

 

圖片來源:Unsplash

情感分析可能是最常見的 自然語言處理 的應(yīng)用之一。我無需去額外強(qiáng)調(diào)在客服工具中情感分析的重要性。本文將利用循環(huán)神經(jīng)網(wǎng)絡(luò),訓(xùn)練出一個(gè)基于 IMDB 數(shù)據(jù)集的電影評(píng)論分類器。如果你想了解更多關(guān)于深度學(xué)習(xí)在情感分析中的應(yīng)用,這里推薦一篇很棒的論文。

數(shù)據(jù)

我們將采用循環(huán)神經(jīng)網(wǎng)絡(luò),具體地說應(yīng)該是 LSTM,去實(shí)現(xiàn)基于 Keras 的情感分析。Keras 已經(jīng)將 IMBD 電影評(píng)論數(shù)據(jù)內(nèi)置其中,我們可以很方便地調(diào)用。

from keras.datasets import imdb

設(shè)置詞匯量的總數(shù),并加載訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)。

vocabulary_size = 5000
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words = vocabulary_size)
print('Loaded dataset with {} training samples, {} test samples'.format(len(X_train), len(X_test)))

加載完的數(shù)據(jù)擁有 25000 個(gè)訓(xùn)練樣本和 25000 個(gè)測(cè)試樣本。

查看一條評(píng)論樣本及其標(biāo)簽。

 

 

請(qǐng)注意,評(píng)論是以一串整數(shù)的形式進(jìn)行存儲(chǔ)的,它們表示預(yù)先分配給每個(gè)詞語的 ID。標(biāo)簽則用一個(gè)整數(shù)表示,0 代表消極的評(píng)價(jià),1 代表積極的評(píng)價(jià)。

我們可以利用imdb.get_word_index()函數(shù)返回的字典,從而將評(píng)論映射回原有的文字。

 

 

查看最長(zhǎng)的評(píng)論長(zhǎng)度和最短的評(píng)論長(zhǎng)度。

print('Maximum review length: {}'.format(
len(max((X_train + X_test), key=len))))

最長(zhǎng)的評(píng)論長(zhǎng)度為 2697 個(gè)詞

print('Minimum review length: {}'.format(
len(min((X_test + X_test), key=len))))

最短的評(píng)論長(zhǎng)度為 14 個(gè)詞

填充序列

為了讓數(shù)據(jù)能夠輸入 RNN 模型,所有的輸入文檔必須有相同的長(zhǎng)度。我們需要設(shè)置max_words變量來限制評(píng)論的最大長(zhǎng)度,超過該長(zhǎng)度的評(píng)論將被截?cái),不足該長(zhǎng)度的評(píng)論將被填充空值(0)。在 Keras 中,我們可以使用pad_sequences()函數(shù)來達(dá)到此目標(biāo),F(xiàn)在設(shè)置max_words變量的值為 500。

 

 

設(shè)計(jì)情感分析的 RNN 模型

我們開始在下面的代碼單元中創(chuàng)建模型架構(gòu)。我們已經(jīng)從 Keras 中導(dǎo)入了一些你可能會(huì)用到的網(wǎng)絡(luò)層,當(dāng)然你也可以使用任何你喜歡的網(wǎng)絡(luò)層或者轉(zhuǎn)換器。

記住,我們的輸入是一串詞語,從學(xué)術(shù)上講,是整數(shù)形式的詞語 ID,其最大長(zhǎng)度等于max_words變量值。而我們的輸出是二進(jìn)制形式的情感標(biāo)簽(0 或 1)。

 

 

總結(jié)一下,我們創(chuàng)建了一個(gè)簡(jiǎn)單的 RNN 模型,其擁有一個(gè)嵌入層,一個(gè) LSTM 層和一個(gè)全連接層。這其中一共有 233301 個(gè)待訓(xùn)練的參數(shù)。

訓(xùn)練及評(píng)估模型

我們需要先對(duì)模型進(jìn)行編譯,包括指定損失函數(shù),訓(xùn)練中想采用的優(yōu)化器和用于測(cè)量的評(píng)價(jià)指標(biāo)。設(shè)置好合適的參數(shù),其中包含至少一個(gè)度量指標(biāo):準(zhǔn)確率。

model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])

編譯完成后,就可以開啟訓(xùn)練過程了。我們需要指定兩個(gè)很重要的訓(xùn)練參數(shù):每一批量中的樣本數(shù)和訓(xùn)練迭代次數(shù),它們和我們的模型架構(gòu)一起決定了總體的訓(xùn)練時(shí)間。

訓(xùn)練可能需要一段時(shí)間,所以可以去喝杯咖啡,或者更好地去跑會(huì)步吧。

 

 

訓(xùn)練完成后,接下來就可以看下模型在未處理過的測(cè)試數(shù)據(jù)上的表現(xiàn)了。

我們?cè)O(shè)置了metrics=['accuracy'],scores[1]就代表此次評(píng)估的準(zhǔn)確率。

scores = model.evaluate(X_test, y_test, verbose=0)
print('Test accuracy:', scores[1])

測(cè)試準(zhǔn)確率為 0.86964

總結(jié)

創(chuàng)建模型的方法有很多種。我們可以嘗試不同的架構(gòu),網(wǎng)絡(luò)層及參數(shù),從而不斷提高模型的準(zhǔn)確率。在這一過程中,我們可以思考,在避免消耗長(zhǎng)時(shí)間訓(xùn)練的前提下,我們還能做怎樣的提升?我們應(yīng)該如何避免過擬合?

本文的代碼可以從 Github 上下載。非常期待能聽到大家的反饋和問題。

標(biāo)簽: Google 代碼 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:衛(wèi)報(bào)解讀機(jī)器的崛起:技術(shù)已經(jīng)進(jìn)化到超出人類的控制?

下一篇:數(shù)據(jù)遷移二三事(寫于阿里云100PB數(shù)據(jù)大遷移之后)