<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Keras 中文本摘要的編碼器 - 解碼器模型 > 原文: [https://machinelearningmastery.com/encoder-decoder-models-text-summarization-keras/](https://machinelearningmastery.com/encoder-decoder-models-text-summarization-keras/) 文本摘要是自然語言處理中的一個問題,即創建源文檔的簡短,準確和流暢的摘要。 為機器翻譯開發的編碼器 - 解碼器循環神經網絡架構在應用于文本摘要問題時已被證明是有效的。 在 Keras 深度學習庫中應用這種架構可能很困難,因為為了使庫清潔,簡單和易于使用而犧牲了一些靈活性。 在本教程中,您將了解如何在 Keras 中實現用于文本摘要的編碼器 - 解碼器架構。 完成本教程后,您將了解: * 如何使用編碼器 - 解碼器循環神經網絡架構來解決文本摘要。 * 如何針對該問題實現不同的編碼器和解碼器。 * 您可以使用三種模型在 Keras 中實現文本摘要的體系結構。 讓我們開始吧。 ![Encoder-Decoder Models for Text Summarization in Keras](img/bd7f0bdd354c591ea4a3577195c35dd1.jpg) 用于 Keras 中文本摘要的編碼器 - 解碼器模型 照片由 [Diogo Freire](https://www.flickr.com/photos/diogofreire/4766208168/) 拍攝,保留一些權利。 ## 教程概述 本教程分為 5 個部分;他們是: 1. 編碼器 - 解碼器架構 2. 文本摘要編碼器 3. 文本摘要解碼器 4. 閱讀源文本 5. 實施模型 ## 編碼器 - 解碼器架構 編碼器 - 解碼器架構是一種組織循環神經網絡的方法,用于具有可變數量的輸入,輸出或兩者輸入和輸出的序列預測問題。 該架構涉及兩個組件:編碼器和解碼器。 * **編碼器**:編碼器讀取整個輸入序列并將其編碼為內部表示,通常是稱為上下文向量的固定長度向量。 * **解碼器**:解碼器從編碼器讀取編碼的輸入序列并生成輸出序列。 有關編碼器 - 解碼器架構的更多信息,請參閱帖子: * [編碼器 - 解碼器長短期存儲器網絡](https://machinelearningmastery.com/encoder-decoder-long-short-term-memory-networks/) 編碼器和解碼器子模型都是聯合訓練的,意思是同時進行。 這是一項非常壯觀的事情,因為傳統上,挑戰自然語言問題需要開發單獨的模型,這些模型后來被串入管道,允許錯誤在序列生成過程中累積。 整個編碼輸入用作生成輸出中每個步驟的上下文。雖然這有效,但輸入的固定長度編碼限制了可以生成的輸出序列的長度。 編碼器 - 解碼器架構的擴展是提供編碼輸入序列的更具表現形式,并允許解碼器在生成輸出序列的每個步驟時學習在何處關注編碼輸入。 這種體系結構的擴展稱為注意。 有關編碼器 - 解碼器架構中的注意事項的更多信息,請參閱帖子: * [長期短期記憶循環神經網絡](https://machinelearningmastery.com/attention-long-short-term-memory-recurrent-neural-networks/)的注意事項 編碼器 - 解碼器體系結構受到關注,是一組自然語言處理問題,它產生可變長度的輸出序列,例如文本摘要。 體系結構在文本摘要中的應用如下: * **編碼器**:編碼器負責讀取源文檔并將其編碼為內部表示。 * **解碼器**:解碼器是一種語言模型,負責使用源文檔的編碼表示在輸出摘要中生成每個單詞。 ## 文本摘要編碼器 編碼器是模型的復雜性所在,因為它負責捕獲源文檔的含義。 可以使用不同類型的編碼器,但是更常用的是雙向循環神經網絡,例如 LSTM。在編碼器中使用循環神經網絡的情況下,使用字嵌入來提供字的分布式表示。 亞歷山大拉什等人。使用一個簡單的詞袋編碼器來丟棄單詞順序和卷積編碼器,明確地嘗試捕獲 n-gram。 > 我們最基本的模型只使用嵌入到 H 大小的輸入句子的詞袋,而忽略原始順序的屬性或相鄰單詞之間的關系。 [...]為了解決一些詞形的建模問題,我們還考慮使用深度卷積編碼器來輸入句子。 - [抽象句概括的神經注意模型](https://arxiv.org/abs/1509.00685),2015。 Konstantin Lopyrev 使用深度堆疊的 4 個 LSTM 循環神經網絡作為編碼器。 > 編碼器作為輸入被輸入一個單詞一次的新聞文章的文本。每個單詞首先通過嵌入層,該嵌入層將單詞轉換為分布式表示。然后使用多層神經網絡組合該分布式表示 - [使用循環神經網絡生成新聞標題](https://arxiv.org/abs/1512.01712),2015 年。 Abigail See,et al。使用單層雙向 LSTM 作為編碼器。 > 將文章 w(i)的標記一個接一個地饋送到編碼器(單層雙向 LSTM)中,產生編碼器隱藏狀態序列 h(i)。 - [達到要點:利用指針生成器網絡匯總](https://arxiv.org/abs/1704.04368),2017 年。 Ramesh Nallapati,et al。在編碼器中使用雙向 GRU 循環神經網絡,并在輸入序列中包含有關每個字的附加信息。 > 編碼器由雙向 GRU-RNN 組成...... - [使用序列到序列 RNN 及其后的抽象文本摘要](https://arxiv.org/abs/1602.06023),2016。 ## 文本摘要解碼器 在給定兩個信息源的情況下,解碼器必須在輸出序列中生成每個字: 1. **上下文向量**:編碼器提供的源文檔的編碼表示。 2. **生成的序列**:已作為摘要生成的單詞或單詞序列。 上下文向量可以是如在簡單編碼器 - 解碼器架構中的固定長度編碼,或者可以是通過注意機制過濾的更具表現力的形式。 生成的序列提供很少的準備,例如通過字嵌入的每個生成的字的分布式表示。 > 在每個步驟 t,解碼器(單層單向 LSTM)接收前一個字的字嵌入(在訓練時,這是參考摘要的前一個字;在測試時它是解碼器發出的前一個字) - [達到要點:利用指針生成器網絡匯總](https://arxiv.org/abs/1704.04368),2017 年。 亞歷山大拉什等人。在 _x_ 是源文檔的圖表中干凈地顯示, _enc_ 是提供源文檔內部表示的編碼器, _yc_ 是先前的序列生成的單詞。 ![Example of inputs to the decoder for text summarization](img/2453ff0732cb22ffb4e8569f76989116.jpg) 用于文本摘要的解碼器的輸入示例。 取自“用于抽象句子摘要的神經注意模型”,2015 年。 一次生成一個單詞需要運行模型,直到生成一些最大數量的摘要單詞或達到特殊的序列結束標記。 必須通過為模型提供特殊的序列開始標記來啟動該過程,以便生成第一個單詞。 > 解碼器將輸入文本的最后一個單詞后生成的隱藏層作為輸入。首先,再次使用嵌入層將符號結束符號作為輸入饋入,以將符號變換為分布式表示。 [...]。在生成下一個單詞時,生成每個單詞后輸入相同的單詞作為輸入。 - [使用循環神經網絡生成新聞標題](https://arxiv.org/abs/1512.01712),2015 年。 Ramesh Nallapati,et al。使用 GRU 循環神經網絡生成輸出序列。 > ...解碼器由單向 GRU-RNN 組成,其具有與編碼器相同的隱藏狀態大小 ## 閱讀源文本 根據所解決的特定文本摘要問題,該架構的應用具有靈活性。 大多數研究都集中在編碼器中的一個或幾個源句子上,但并非必須如此。 例如,編碼器可以配置為以不同大小的塊讀取和編碼源文檔: * 句子。 * 段。 * 頁。 * 文獻。 同樣地,解碼器可以被配置為匯總每個塊或聚合編碼的塊并輸出更廣泛的概要。 亞歷山大拉什等人在這條道路上做了一些工作。使用分層編碼器模型,同時注意單詞和句子級別。 > 該模型旨在使用源側的兩個雙向 RNN 捕獲這兩個重要級別的概念,一個在單詞級別,另一個在句子級別。注意機制同時在兩個層面上運作 - [抽象句概括的神經注意模型](https://arxiv.org/abs/1509.00685),2015。 ## 實施模型 在本節中,我們將介紹如何在 Keras 深度學習庫中實現用于文本摘要的編碼器 - 解碼器架構。 ### 一般模型 模型的簡單實現涉及具有嵌入輸入的編碼器,其后是 LSTM 隱藏層,其產生源文檔的固定長度表示。 解碼器讀取表示和最后生成的單詞的嵌入,并使用這些輸入在輸出摘要中生成每個單詞。 ![General Text Summarization Model in Keras](img/c48bfc3a2cf7965d3a39f815f6daa641.jpg) Keras 中的一般文本摘要模型 這兒存在一個問題。 Keras 不允許遞歸循環,其中模型的輸出自動作為輸入提供給模型。 這意味著上面描述的模型不能直接在 Keras 中實現(但也許可以在像 TensorFlow 這樣更靈活的平臺中實現)。 相反,我們將看看我們可以在 Keras 中實現的模型的三種變體。 ### 替代 1:一次性模型 第一種替代模型是以一次性方式生成整個輸出序列。 也就是說,解碼器僅使用上下文向量來生成輸出序列。 ![Alternate 1 - One-Shot Text Summarization Model](img/6c1cb97aa80bca4ee41e557e47448c35.jpg) 替代 1 - 一次性文本摘要模型 以下是使用功能 API 在 Keras 中使用此方法的示例代碼。 ```py vocab_size = ... src_txt_length = ... sum_txt_length = ... # encoder input model inputs = Input(shape=(src_txt_length,)) encoder1 = Embedding(vocab_size, 128)(inputs) encoder2 = LSTM(128)(encoder1) encoder3 = RepeatVector(sum_txt_length)(encoder2) # decoder output model decoder1 = LSTM(128, return_sequences=True)(encoder3) outputs = TimeDistributed(Dense(vocab_size, activation='softmax'))(decoder1) # tie it together model = Model(inputs=inputs, outputs=outputs) model.compile(loss='categorical_crossentropy', optimizer='adam') ``` 這種模式給解碼器帶來了沉重的負擔。 解碼器可能沒有足夠的上下文來生成相干輸出序列,因為它必須選擇單詞及其順序。 ### 備選 2:遞歸模型 A. 第二種替代模型是開發一種模型,該模型生成單個單詞預測并遞歸調用。 也就是說,解碼器使用上下文向量和到目前為止生成的所有單詞的分布式表示作為輸入,以便生成下一個單詞。 語言模型可用于解釋到目前為止生成的單詞序列,以提供第二上下文向量以與源文檔的表示相結合,以便生成序列中的下一個單詞。 通過遞歸調用模型并使用先前生成的單詞(或者更具體地說,在訓練期間預期的前一個單詞)來構建摘要。 可以將上下文向量集中或加在一起以為解碼器提供更寬的上下文來解釋和輸出下一個字。 ![Alternate 2 - Recursive Text Summarization Model A](img/f5989e00bdf4556d451c7eaf21e4ee68.jpg) 備用 2 - 遞歸文本摘要模型 A. 以下是使用功能 API 在 Keras 中使用此方法的示例代碼。 ```py vocab_size = ... src_txt_length = ... sum_txt_length = ... # source text input model inputs1 = Input(shape=(src_txt_length,)) am1 = Embedding(vocab_size, 128)(inputs1) am2 = LSTM(128)(am1) # summary input model inputs2 = Input(shape=(sum_txt_length,)) sm1 = = Embedding(vocab_size, 128)(inputs2) sm2 = LSTM(128)(sm1) # decoder output model decoder1 = concatenate([am2, sm2]) outputs = Dense(vocab_size, activation='softmax')(decoder1) # tie it together [article, summary] [word] model = Model(inputs=[inputs1, inputs2], outputs=outputs) model.compile(loss='categorical_crossentropy', optimizer='adam') ``` 這更好,因為解碼器有機會使用先前生成的單詞和源文檔作為生成下一個單詞的上下文。 它確實給合并操作和解碼器帶來了負擔,以解釋它在生成輸出序列時的位置。 ### 備選 3:遞歸模型 B. 在該第三替代方案中,編碼器生成源文檔的上下文向量表示。 在生成的輸出序列的每個步驟將該文檔饋送到解碼器。這允許解碼器建立與用于在輸出序列中生成單詞的內部狀態相同的內部狀態,以便準備生成序列中的下一個單詞。 然后通過對輸出序列中的每個字一次又一次地調用模型來重復該過程,直到生成最大長度或序列結束標記。 ![Alternate 3 - Recursive Text Summarization Model B](img/96538108e3739e0de8e4d8d543c7da60.jpg) 備用 3 - 遞歸文本摘要模型 B. 以下是使用功能 API 在 Keras 中使用此方法的示例代碼。 ```py vocab_size = ... src_txt_length = ... sum_txt_length = ... # article input model inputs1 = Input(shape=(src_txt_length,)) article1 = Embedding(vocab_size, 128)(inputs1) article2 = LSTM(128)(article1) article3 = RepeatVector(sum_txt_length)(article2) # summary input model inputs2 = Input(shape=(sum_txt_length,)) summ1 = Embedding(vocab_size, 128)(inputs2) # decoder model decoder1 = concatenate([article3, summ1]) decoder2 = LSTM(128)(decoder1) outputs = Dense(vocab_size, activation='softmax')(decoder2) # tie it together [article, summary] [word] model = Model(inputs=[inputs1, inputs2], outputs=outputs) model.compile(loss='categorical_crossentropy', optimizer='adam') ``` 您還有其他替代實施方案嗎? 請在下面的評論中告訴我。 ## 進一步閱讀 如果您要深入了解,本節將提供有關該主題的更多資源。 ### 文件 * [抽象句概括的神經注意模型](https://arxiv.org/abs/1509.00685),2015。 * [使用循環神經網絡生成新聞標題](https://arxiv.org/abs/1512.01712),2015 年。 * [使用序列到序列 RNN 及其后的抽象文本摘要](https://arxiv.org/abs/1602.06023),2016。 * [達到要點:利用指針生成器網絡匯總](https://arxiv.org/abs/1704.04368),2017 年。 ### 有關 * [編碼器 - 解碼器長短期存儲器網絡](https://machinelearningmastery.com/encoder-decoder-long-short-term-memory-networks/) * [長期短期記憶循環神經網絡](https://machinelearningmastery.com/attention-long-short-term-memory-recurrent-neural-networks/)的注意事項 ## 摘要 在本教程中,您了解了如何在 Keras 深度學習庫中實現用于文本摘要的編碼器 - 解碼器架構。 具體來說,你學到了: * 如何使用編碼器 - 解碼器循環神經網絡架構來解決文本摘要。 * 如何針對該問題實現不同的編碼器和解碼器。 * 您可以使用三種模型在 Keras 中實現文本摘要的體系結構。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看