丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
人工智能開發(fā)者 正文
發(fā)私信給AI研習(xí)社-譯站
發(fā)送

0

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

本文作者: AI研習(xí)社-譯站 2018-06-21 16:03
導(dǎo)語:本文將利用循環(huán)神經(jīng)網(wǎng)絡(luò),訓(xùn)練出一個(gè)基于 IMDB 數(shù)據(jù)集的電影評論分類器。

雷鋒網(wǎng)按:本文為雷鋒網(wǎng)字幕組編譯的技術(shù)博客,原標(biāo)題 Advances in Semantic Textual Similarity,作者為 Google AI 的軟件工程師與技術(shù)主管 Yinfei Yang。

翻譯 | 陳濤     整理  |  孔令雙

原文鏈接:

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

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

圖片來源:Unsplash

情感分析可能是最常見的 自然語言處理 的應(yīng)用之一。我無需去額外強(qiáng)調(diào)在客服工具中情感分析的重要性。本文將利用循環(huán)神經(jīng)網(wǎng)絡(luò),訓(xùn)練出一個(gè)基于 IMDB 數(shù)據(jù)集的電影評論分類器。如果你想了解更多關(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 電影評論數(shù)據(jù)內(nèi)置其中,我們可以很方便地調(diào)用。

from keras.datasets import imdb

設(shè)置詞匯量的總數(shù),并加載訓(xùn)練數(shù)據(jù)和測試數(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è)測試樣本。

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

print('---review---')

print(X_train[6])

print('---label---')

print(y_train[6])

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

圖 1

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

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

word2id = imdb.get_word_index()

id2word = {i: word for word, i in word2id.items()}

print('---review with words---')

print([id2word.get(i, ' ') for i in X_train[6]])

print('---label---')

print(y_train[6])

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

圖 2

查看最長的評論長度和最短的評論長度。

print('Maximum review length: {}'.format(

len(max((X_train + X_test), key=len))))

最長的評論長度為 2697 個(gè)詞

print('Minimum review length: {}'.format(

len(min((X_test + X_test), key=len))))

最短的評論長度為 14 個(gè)詞

填充序列

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

from keras.preprocessing import sequence


max_words = 500

X_train = sequence.pad_sequences(X_train, maxlen=max_words)

X_test = sequence.pad_sequences(X_test, maxlen=max_words)

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

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

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

from keras import Sequential

from keras.layers import Embedding, LSTM, Dense, Dropout


embedding_size=32

model=Sequential()

model.add(Embedding(vocabulary_size, embedding_size, input_length=max_words))

model.add(LSTM(100))

model.add(Dense(1, activation='sigmoid'))


print(model.summary())

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

圖 3

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

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

我們需要先對模型進(jìn)行編譯,包括指定損失函數(shù),訓(xùn)練中想采用的優(yōu)化器和用于測量的評價(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í)間,所以可以去喝杯咖啡,或者更好地去跑會步吧。

batch_size = 64

num_epochs = 3


X_valid, y_valid = X_train[:batch_size], y_train[:batch_size]

X_train2, y_train2 = X_train[batch_size:], y_train[batch_size:]


model.fit(X_train2, y_train2, validation_data=(X_valid, y_valid), batch_size=batch_size, epochs=num_epochs)

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

圖 4

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

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

scores = model.evaluate(X_test, y_test, verbose=0)

print('Test accuracy:', scores[1])

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

總結(jié)

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

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

雷鋒網(wǎng)字幕組編譯。

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

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

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

分享:
相關(guān)文章

知情人士

AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個(gè)人簡介
為了您的賬戶安全,請驗(yàn)證郵箱
您的郵箱還未驗(yàn)證,完成可獲20積分喲!
請驗(yàn)證您的郵箱
立即驗(yàn)證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說