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

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

2018-09-27    來源:raincent

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

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

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

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

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

一個簡單的 RNN;

一個帶詞嵌入的 RNN;

一個雙向 RNN;

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

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

加載庫

 

 

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

數(shù)據(jù)

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

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

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

 

 

語句樣本

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

 

 

 

 

詞匯表

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

 

 

 

 

預處理

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

1. 將詞轉化為 id 表達;

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

Tokensize(標記字符串)

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

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

 

 

 

 

Padding

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

 

 

 

 

預處理流程

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

 

 

 

 

模型

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

模型 1 是一個簡單的 RNN;

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

模型 3 是一個雙向 RNN;

模型 4 是兩個 RNN 組成的編碼器—解碼器架構。

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

id 重新轉化為文本

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

 

 

模型 1:RNN

 

 

我們構建一個基礎的 RNN 模型,該模型是將英文翻譯成法文序列的良好基準。

 

 

 

 

基礎 RNN 模型的驗證集準確度是 0.6039。

模型 2:詞嵌入

 

 

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

 

 

 

 

嵌入式模型的驗證集準確度是 0.8401。

模型 3:雙向 RNN

 

 

 

 

 

 

雙向 RNN 模型的驗證集準確度是 0.5992。

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

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

 

 

 

 

編碼器—解碼器模型的驗證集準確度是 0.6406。

模型 5:自定義深度模型

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

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

 

 

預測

 

 

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

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

標簽: 代碼 網(wǎng)絡

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

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

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