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

入門Python神經(jīng)機器翻譯,這是一篇非常精簡的實戰(zhàn)指南

2018-09-27    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

機器翻譯(MT)是一項極具挑戰(zhàn)性的任務(wù),其研究如何使用計算機將文本或是語音從一種語言翻譯成另一種語言。本文借助 Keras 從最基本的文本加載與數(shù)據(jù)預(yù)處理開始,并討論了在循環(huán)神經(jīng)網(wǎng)絡(luò)與編碼器解碼器框架下如何才能構(gòu)建一個可接受的神經(jīng)翻譯系統(tǒng),本教程所有的代碼已在 GitHub 開源。

傳統(tǒng)意義上來說,機器翻譯一般使用高度復(fù)雜的語言知識開發(fā)出的大型統(tǒng)計模型,但是近來很多研究使用深度模型直接對翻譯過程建模,并在只提供原語數(shù)據(jù)與譯文數(shù)據(jù)的情況下自動學(xué)習(xí)必要的語言知識。這種基于深度神經(jīng)網(wǎng)絡(luò)的翻譯模型目前已經(jīng)獲得了最佳效果。

項目地址:https://github.com/susanli2016/NLP-with-Python/blob/master/machine_translation.ipynb

接下來,我們將使用深度神經(jīng)網(wǎng)絡(luò)來解決機器翻譯問題。我們將展示如何開發(fā)一個將英文翻譯成法文的神經(jīng)網(wǎng)絡(luò)機器翻譯模型。該模型將接收英文文本輸入同時返回法語譯文。更確切地說,我們將構(gòu)建 4 個模型,它們是:

一個簡單的 RNN;

一個帶詞嵌入的 RNN;

一個雙向 RNN;

一個編碼器—解碼器模型。

訓(xùn)練和評估深度神經(jīng)網(wǎng)絡(luò)是一項計算密集型的任務(wù)。作者使用 AWS EC2 實例來運行所有代碼。如果你打算照著本文做,你得訪問 GPU 實例。

加載庫

 

 

作者使用 help.py 加載數(shù)據(jù),同時使用 project_test.py 測試函數(shù)。

數(shù)據(jù)

該數(shù)據(jù)集包含一個相對較小的詞匯表,其中 small_vocab_en 文件包含英文語句,small_vocab_fr 包含對應(yīng)的法文翻譯。

數(shù)據(jù)集下載地址:https://github.com/susanli2016/NLP-with-Python/tree/master/data

加載數(shù)據(jù)

 

 

語句樣本

small_vocab_en 中的每行包含一個英文語句,同時其法文翻譯位于 small_vocab_fr 中對應(yīng)的每行。

 

 

 

 

詞匯表

問題的復(fù)雜性取決于詞匯表的復(fù)雜性。一個更復(fù)雜的詞匯表意味著一個更復(fù)雜的問題。對于將要處理的數(shù)據(jù)集,讓我們看看它的復(fù)雜性。

 

 

 

 

預(yù)處理

我們將使用以下預(yù)處理方法將文本轉(zhuǎn)化為整數(shù)序列:

1. 將詞轉(zhuǎn)化為 id 表達;

2. 加入 padding 使得每個序列一樣長。

Tokensize(標(biāo)記字符串)

使用 Keras 的 Tokenizer 函數(shù)將每個語句轉(zhuǎn)化為一個單詞 id 的序列。使用該函數(shù)來標(biāo)記化英文語句和法文語句。

函數(shù) tokenize 返回標(biāo)記化后的輸入和類。

 

 

 

 

Padding

通過使用 Keras 的 pad_sequences 函數(shù)在每個序列最后添加零以使得所有英文序列具有相同長度,所有法文序列具有相同長度。

 

 

 

 

預(yù)處理流程

實現(xiàn)預(yù)處理函數(shù):

 

 

 

 

模型

在本節(jié)中,我們將嘗試各種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。我們將訓(xùn)練 4 個相對簡單的結(jié)構(gòu)作為開始:

模型 1 是一個簡單的 RNN;

模型 2 是一個帶詞嵌入的 RNN;

模型 3 是一個雙向 RNN;

模型 4 是兩個 RNN 組成的編碼器—解碼器架構(gòu)。

在嘗試了 4 種簡單的結(jié)構(gòu)之后,我們將構(gòu)建一個更深的模型,其性能要優(yōu)于以上 4 種模型。

id 重新轉(zhuǎn)化為文本

神經(jīng)網(wǎng)絡(luò)將輸入轉(zhuǎn)化為單詞 id,但這不是我們最終想要的形式,我們想要的是法文翻譯。logits_to_text 函數(shù)彌補了從神經(jīng)網(wǎng)絡(luò)輸出的 logits 到法文翻譯之間的缺口,我們將使用該函數(shù)更好地理解神經(jīng)網(wǎng)絡(luò)的輸出。

 

 

模型 1:RNN

 

 

我們構(gòu)建一個基礎(chǔ)的 RNN 模型,該模型是將英文翻譯成法文序列的良好基準(zhǔn)。

 

 

 

 

基礎(chǔ) RNN 模型的驗證集準(zhǔn)確度是 0.6039。

模型 2:詞嵌入

 

 

詞嵌入是在 n 維空間中近義詞距離相近的向量表示,其中 n 表示嵌入向量的大小。我們將使用詞嵌入來構(gòu)建一個 RNN 模型。

 

 

 

 

嵌入式模型的驗證集準(zhǔn)確度是 0.8401。

模型 3:雙向 RNN

 

 

 

 

 

 

雙向 RNN 模型的驗證集準(zhǔn)確度是 0.5992。

模型 4:編碼器—解碼器框架

編碼器構(gòu)建一個語句的矩陣表示,而解碼器將該矩陣作為輸入并輸出預(yù)測的翻譯。

 

 

 

 

編碼器—解碼器模型的驗證集準(zhǔn)確度是 0.6406。

模型 5:自定義深度模型

構(gòu)建一個將詞嵌入和雙向 RNN 合并到一個模型中的 model_final。

至此,我們需要需要做一些實驗,例如將 GPU 參數(shù)改為 256,將學(xué)習(xí)率改為 0.005,對模型訓(xùn)練多于(或少于)20 epochs 等等。

 

 

預(yù)測

 

 

我們得到了語句完美的翻譯同時驗證集準(zhǔn)確度是 0.9776!

原文鏈接:https://medium.com/@actsusanli/neural-machine-translation-with-python-c2f0a34f7dd

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

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

上一篇:“大數(shù)據(jù)之父”:大數(shù)據(jù)正替代貨幣部分職能

下一篇:吳恩達過時了?這群俄國人推出機器學(xué)習(xí)新課程(附資源)