<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 淺談詞袋模型 > 原文: [https://machinelearningmastery.com/gentle-introduction-bag-words-model/](https://machinelearningmastery.com/gentle-introduction-bag-words-model/) 詞袋模型是一種在使用機器學習算法對文本建模時表示文本數據的方式。 詞袋模型易于理解和實現,并且在語言建模和文檔分類等問題上取得了巨大成功。 在本教程中,您將發現用于自然語言處理中的特征提取的詞袋模型。 完成本教程后,您將了解: * 詞袋模型是什么以及為什么需要表示文本。 * 如何為一組文檔開發一個詞袋模型。 * 如何使用不同的技巧來準備詞匯和得分詞。 讓我們開始吧。 ![A Gentle Introduction to the Bag-of-Words Model](img/d53eb5e42ff077261e1784fa05717c26.jpg) 簡單介紹字袋模型 照 [Do8y](https://www.flickr.com/photos/beorn_ours/5675267679/) ,保留一些權利。 ## 教程概述 本教程分為 6 個部分;他們是: 1. 文本問題 2. 什么是詞袋? 3. 詞袋模型的例子 4. 管理詞匯 5. 得分詞 6. 詞袋的局限性 ## 文本問題 建模文本的一個問題是它很亂,機器學習算法等技術更喜歡定義明確的固定長度輸入和輸出。 機器學習算法無法直接使用原始文本;文本必須轉換為數字。具體而言,是數字的向量。 > 在語言處理中,向量 x 從文本數據導出,以反映文本的各種語言屬性。 - 第 65 頁,[自然語言處理中的神經網絡方法](http://amzn.to/2wycQKA),2017。 這稱為特征提取或特征編碼。 使用文本數據進行特征提取的一種流行且簡單的方法稱為文本的詞袋模型。 ## 什么是詞袋? 單詞袋模型(簡稱 BoW)是一種從文本中提取特征以用于建模的方法,例如使用機器學習算法。 該方法非常簡單和靈活,并且可以以多種方式用于從文檔中提取特征。 詞袋是文本的表示,用于描述文檔中單詞的出現。它涉及兩件事: 1. 已知單詞的詞匯。 2. 衡量已知單詞的存在。 它被稱為單詞的“ _bag_ ”,因為關于文檔中單詞的順序或結構的任何信息都被丟棄。該模型僅關注文檔中是否出現已知單詞,而不是文檔中的位置。 > 句子和文檔的一個非常常見的特征提取過程是詞袋方法(BOW)。在這種方法中,我們查看文本中單詞的直方圖,即將每個單詞計數視為一個特征。 - 第 69 頁,[自然語言處理中的神經網絡方法](http://amzn.to/2wycQKA),2017。 直覺是如果文檔具有相似的內容,則文檔是相似的。此外,僅從內容中我們就可以了解文檔的含義。 詞袋可以像你想的那樣簡單或復雜。復雜性在于決定如何設計已知單詞(或標記)的詞匯以及如何對已知單詞的存在進行評分。 我們將仔細研究這兩個問題。 ## 詞袋模型的例子 讓我們用一個有效的例子制作詞袋模型混凝土。 ### 第 1 步:收集數據 下面是查爾斯·狄更斯(Charles Dickens)從“古騰堡計劃”(Project Gutenberg)那本書出版的“[雙城記](https://www.gutenberg.org/ebooks/98)”一書中的前幾行文本片段。 > 這是最好的時期, > 這是最糟糕的時期, > 這是智慧的時代, > 這是愚蠢的時代, 對于這個小例子,讓我們將每一行視為一個單獨的“文檔”,將 4 行視為我們的整個文檔集。 ### 第 2 步:設計詞匯表 現在我們可以列出模型詞匯表中的所有單詞。 這里唯一的單詞(忽略大小寫和標點符號)是: * “它” * “是” * “中的” * “最好” * “的” * “時代” * “最差” * “年齡” * “智慧” * “愚蠢” 這是一個包含 24 個單詞的語料庫中 10 個單詞的詞匯。 ### 第 3 步:創建文檔向量 下一步是對每個文檔中的單詞進行評分。 目標是將每個自由文本文檔轉換為向量,我們可以將其用作機器學習模型的輸入或輸出。 因為我們知道詞匯有 10 個單詞,所以我們可以使用 10 的固定長度文檔表示,在向量中有一個位置來對每個單詞進行評分。 最簡單的評分方法是將單詞的存在標記為布爾值,0 表示不存在,1 表示存在。 使用我們詞匯表中上面列出的單詞的任意順序,我們可以逐步瀏覽第一個文檔(“_ 這是最好的時間 _”)并將其轉換為二元向量。 該文件的評分如下: * “它”= 1 * “是”= 1 * “the”= 1 * “最好”= 1 * “of”= 1 * “時代”= 1 * “最差”= 0 * “年齡”= 0 * “智慧”= 0 * “愚蠢”= 0 作為二二元量,這將如下所示: ```py [1, 1, 1, 1, 1, 1, 0, 0, 0, 0] ``` 其他三份文件如下: ```py "it was the worst of times" = [1, 1, 1, 0, 1, 1, 1, 0, 0, 0] "it was the age of wisdom" = [1, 1, 1, 0, 1, 0, 0, 1, 1, 0] "it was the age of foolishness" = [1, 1, 1, 0, 1, 0, 0, 1, 0, 1] ``` 所有單詞的排序名義上都被丟棄了,我們有一致的方法從我們語料庫中的任何文檔中提取特征,準備用于建模。 與已知單詞的詞匯重疊但可能包含詞匯表之外的單詞的新文檔仍然可以被編碼,其中僅對已知單詞的出現進行評分并且忽略未知單詞。 您可以看到這可能會自然地擴展到大型詞匯表和更大的文檔。 ## 管理詞匯 隨著詞匯量的增加,文檔的向量表示也會增加。 在前面的示例中,文檔向量的長度等于已知單詞的數量。 你可以想象,對于一個非常大的語料庫,比如數千本書,向量的長度可能是數千或數百萬個位置。此外,每個文檔可以包含詞匯表中很少的已知單詞。 這導致具有許多零分數的向量,稱為稀疏向量或稀疏表示。 稀疏向量在建模時需要更多的存儲器和計算資源,并且大量的位置或維度可以使建模過程對于傳統算法非常具有挑戰性。 因此,當使用詞袋模型時,存在減小詞匯量的壓力的壓力。 有一些簡單的文本清理技術可用作第一步,例如: * 無視案例 * 忽略標點符號 * 忽略不包含太多信息的常用詞,稱為停止詞,如“a”,“of”等。 * 修復拼寫錯誤的單詞。 * 使用詞干算法將單詞減少到詞干(例如,“播放”來自“播放”)。 更復雜的方法是創建分組詞的詞匯表。這既改變了詞匯表的范圍,又允許詞袋從文檔中捕獲更多的含義。 在這種方法中,每個單詞或標記稱為“克”。反過來,創建雙字對詞匯表稱為二元詞模型。同樣,只有出現在語料庫中的雙字母才被建模,而不是所有可能的雙字母。 > N-gram 是一個 N-token 單詞序列:2-gram(通常稱為 bigram)是一個雙字序列,如“請轉”,“轉動你的”,或“你的作業”,一個 3 克(通常稱為三元音)是一個三字詞序列,如“請轉動你的”,或“轉動你的作業”。 - 第 85 頁,[語音和語言處理](http://amzn.to/2vaEb7T),2009。 例如,上一節中第一行文字中的雙字母組:“這是最好的時間”如下: * “它是” * “是的” * “最好的” * “最好的” * “時代” 然后跟蹤單詞的詞組稱為三元組模型,一般方法稱為 n-gram 模型,其中 n 表示分組單詞的數量。 對于像文檔分類這樣的任務,通常一個簡單的二元組方法比一組 1 克的詞袋模型更好。 > 一個袋子的 bigrams 表示比詞袋更強大,并且在許多情況下證明非常難以擊敗。 - 第 75 頁,[自然語言處理中的神經網絡方法](http://amzn.to/2wycQKA),2017。 ## 得分詞 一旦選擇了詞匯表,就需要對示例文檔中單詞的出現進行評分。 在工作示例中,我們已經看到了一種非常簡單的評分方法:對單詞存在與否的二進二元。 一些額外的簡單評分方法包括: * **計算**。計算每個單詞在文檔中出現的次數。 * **頻率**。計算文檔中所有單詞中每個單詞出現在文檔中的頻率。 ### 字哈希 你可能還記得計算機科學中的[哈希函數](https://en.wikipedia.org/wiki/Hash_function)是一個將數據映射到固定大小的數字集的數學運算。 例如,我們在編程時在哈希表中使用它們,其中可能將名稱轉換為數字以進行快速查找。 我們可以在詞匯表中使用已知單詞的哈希表示。這解決了對于大文本語料庫具有非常大的詞匯表的問題,因為我們可以選擇哈希空間的大小,該大小又是文檔的向量表示的大小。 單詞被確定性地散列到目標散列空間中的相同整數索引。然后可以使用二元分數或計數來對單詞進行評分。 這稱為“_ 哈希技巧 _”或“_ 功能哈希 _”。 挑戰在于選擇一個哈希空間來容納所選擇的詞匯量大小,以最小化沖突和權衡稀疏性的可能性。 ### TF-IDF 對單詞頻率進行評分的問題在于,高頻率的單詞在文檔中開始占主導地位(例如,較大的分數),但是可能不包含與模型一樣多的“信息內容”,因為稀有但可能是領域特定的單詞。 一種方法是通過它們在所有文檔中出現的頻率來重新調整單詞的頻率,使得在所有文檔中頻繁出現的頻繁單詞(如“the”)的分數受到懲罰。 這種評分方法稱為術語頻率 - 反向文檔頻率,簡稱 TF-IDF,其中: * **術語頻率**:是當前文檔中單詞頻率的得分。 * **反向文檔頻率**:是對文檔中單詞的罕見程度的評分。 分數是一個權重,并非所有單詞都同樣重要或有趣。 分數具有突出顯示給定文檔中不同(包含有用信息)的單詞的效果。 > 因此,罕見術語的 idf 很高,而常用術語的 idf 可能很低。 - 第 118 頁,[信息檢索簡介](http://amzn.to/2hAR7PH),2008 年。 ## 詞袋的局限性 詞袋模型非常易于理解和實現,并為您的特定文本數據提供了很大的靈活性。 它在語言建模和文檔分類等預測問題上取得了巨大成功。 然而,它有一些缺點,例如: * **詞匯**:詞匯需要仔細設計,最具體的是為了管理大小,這會影響文檔表示的稀疏性。 * **稀疏性**:由于計算原因(空間和時間復雜度)以及信息原因,稀疏表示更難以建模,其中挑戰是模型在如此大的代表空間中利用如此少的信息。 * **含義**:丟棄單詞順序會忽略上下文,而忽略文檔中單詞的含義(語義)。上下文和意義可以為模型提供很多東西,如果建模可以說出不同排列的相同單詞之間的區別(“這很有趣”vs“這是有趣的”),同義詞(“舊自行車”與“二手自行車”) , 以及更多。 ## 進一步閱讀 如果您要深入了解,本節將提供有關該主題的更多資源。 ### 用品 * [維基百科上的詞袋模型](https://en.wikipedia.org/wiki/Bag-of-words_model) * 維基百科上的 [N-gram](https://en.wikipedia.org/wiki/N-gram) * [維基百科上的特征哈希](https://en.wikipedia.org/wiki/Feature_hashing) * 維基百科上的 [tf-idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) ### 圖書 * 第 6 章,[自然語言處理中的神經網絡方法](http://amzn.to/2wycQKA),2017。 * 第 4 章,[語音和語言處理](http://amzn.to/2vaEb7T),2009。 * 第 6 章,[信息檢索簡介](https://amzn.to/2Endtxh),2008 年。 * 第 6 章,[統計自然語言處理基礎](http://amzn.to/2vvnPHP),1999。 ## 摘要 在本教程中,您發現了使用文本數據進行特征提取的詞袋模型。 具體來說,你學到了: * 這些詞匯模型是什么以及我們為什么需要它。 * 如何通過應用詞袋模型來處理文檔集合。 * 可以使用哪些技術來準備詞匯和評分單詞。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看