詞袋模型 (Bag-of-Words, BoW)

更新於 發佈於 閱讀時間約 4 分鐘

「詞袋模型 (Bag-of-Words, BoW)」是一種在自然語言處理 (NLP) 和信息檢索 (IR) 中常用的文本表示方法。它的核心思想是將一段文本(例如一個句子、一個文檔)表示為其中所包含的詞語的集合,而忽略詞語的順序和語法結構。

你可以將詞袋模型想像成一個裝滿詞語的袋子。這個模型只關心袋子裡有哪些詞語,以及每個詞語出現了多少次,而不關心這些詞語在原始文本中的排列順序。

詞袋模型的工作原理:

  1. 建立詞彙表 (Vocabulary Creation): 首先,需要遍歷所有的文本數據,提取出所有出現過的獨特詞語,構建成一個詞彙表。
  2. 文本向量化 (Text Vectorization): 對於每一個文本(例如一個句子或一個文檔),我們創建一個向量,這個向量的長度等於詞彙表的大小。向量中的每個元素對應詞彙表中的一個詞語,而該元素的值表示這個詞語在當前文本中出現的次數。

舉例說明:

假設我們有以下兩個句子:

句子 1: "This is the first document."

句子 2: "This document is the second."

首先,我們建立詞彙表:{"this", "is", "the", "first", "document", "second"}

然後,我們將這兩個句子表示成詞袋向量:

  • 句子 1 的向量:[1, 1, 1, 1, 1, 0] ("this" 出現 1 次, "is" 出現 1 次, "the" 出現 1 次, "first" 出現 1 次, "document" 出現 1 次, "second" 出現 0 次)
  • 句子 2 的向量:[1, 1, 1, 0, 1, 1] ("this" 出現 1 次, "is" 出現 1 次, "the" 出現 1 次, "first" 出現 0 次, "document" 出現 1 次, "second" 出現 1 次)

詞袋模型的優點:

  • 簡單且易於實現: 詞袋模型的概念非常直觀,實現起來也相對簡單。
  • 計算效率高: 相比於考慮詞語順序的模型,詞袋模型的計算效率通常更高。
  • 在一些任務上表現良好: 對於一些文本分類、情感分析等任務,詞袋模型可以作為一個有效的基線模型。

詞袋模型的缺點:

  • 忽略詞語順序: 這是詞袋模型最主要的缺點。由於它不考慮詞語在文本中的順序,因此可能會丟失重要的語義信息。例如,“dog bites man” 和 “man bites dog” 在詞袋模型中會被表示成相同的向量,但它們的含義卻完全不同。
  • 忽略語義關係: 詞袋模型將每個詞語都視為獨立的,無法捕捉詞語之間的語義關係,例如同義詞或近義詞。
  • 稀疏性: 當詞彙表很大時,每個文本的詞袋向量通常會非常稀疏(包含大量的 0),因為每個文本只會包含詞彙表中的一部分詞語。

詞袋模型的常見實現方式:

  • CountVectorizer (在 Scikit-learn 中): 將文本轉換為詞頻矩陣。
  • TF-IDF (Term Frequency-Inverse Document Frequency): 在詞頻的基礎上,考慮了詞語在整個文檔集合中的重要性。TF-IDF 會對在所有文檔中都常見的詞語(例如 "the", "a")進行降權,而對在特定文檔中更重要的詞語進行加權。

總結來說,詞袋模型是一種簡單但有效的文本表示方法,它通過統計文本中詞語的出現頻率來將文本轉換成向量形式,忽略了詞語的順序和語法結構。儘管存在一些局限性,但它仍然是許多 NLP 任務的基礎,並且可以作為更複雜模型的一個很好的起點。

留言
avatar-img
留言分享你的想法!
avatar-img
郝信華 iPAS AI應用規劃師 學習筆記
15會員
363內容數
現職 : 富邦建設資訊副理 證照:經濟部 iPAS AI應用規劃師 AWS Certified AI Practitioner (AIF-C01)
2025/05/25
「詞形還原 (Lemmatization)」是文本前處理 (Text Preprocessing) 的另一個重要步驟,它與詞幹提取 (Stemming) 的目標相似,都是將詞語還原為其基本形式。然而,詞形還原更加精確,它會考慮詞語的詞性 (Part of Speech, POS) 和語境,將詞語轉換
2025/05/25
「詞形還原 (Lemmatization)」是文本前處理 (Text Preprocessing) 的另一個重要步驟,它與詞幹提取 (Stemming) 的目標相似,都是將詞語還原為其基本形式。然而,詞形還原更加精確,它會考慮詞語的詞性 (Part of Speech, POS) 和語境,將詞語轉換
2025/05/25
「詞幹提取 (Stemming)」是文本前處理 (Text Preprocessing) 的一個步驟,旨在將詞語還原為它們的基本形式或詞幹 (stem)。這個過程通常通過移除詞語的詞綴(例如,後綴、前綴)來實現,目的是將具有相同詞根的不同詞形歸為一類,從而減少詞語的變異性,並提高後續 NLP 模型處
2025/05/25
「詞幹提取 (Stemming)」是文本前處理 (Text Preprocessing) 的一個步驟,旨在將詞語還原為它們的基本形式或詞幹 (stem)。這個過程通常通過移除詞語的詞綴(例如,後綴、前綴)來實現,目的是將具有相同詞根的不同詞形歸為一類,從而減少詞語的變異性,並提高後續 NLP 模型處
2025/05/25
「停用詞移除 (Stop Word Removal)」是文本前處理 (Text Preprocessing) 的一個常見步驟,指的是將文本中一些常見的、但通常被認為對文本的語義理解沒有太大貢獻的詞語(即「停用詞」)從文本中移除的過程。 什麼是停用詞? 停用詞通常是指在文本中頻繁出現,但本身並不包
2025/05/25
「停用詞移除 (Stop Word Removal)」是文本前處理 (Text Preprocessing) 的一個常見步驟,指的是將文本中一些常見的、但通常被認為對文本的語義理解沒有太大貢獻的詞語(即「停用詞」)從文本中移除的過程。 什麼是停用詞? 停用詞通常是指在文本中頻繁出現,但本身並不包
看更多
你可能也想看
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
CSS 盒模型是理解和設計網頁佈局的核心概念。它包括元素的內容、填充、邊框和外邊距。
Thumbnail
本文介紹了流行的Python套件NLTK(Natural Language Toolkit)的主要特點、功能和在中文和英文語料上的應用。從安裝到實際應用,深入介紹了分詞、停用詞去除、詞性標註、命名實體識別等NLP任務的具體實現和步驟,幫助讀者理解和應用NLTK。
Thumbnail
本文介紹了流行的Python套件NLTK(Natural Language Toolkit)的主要特點、功能和在中文和英文語料上的應用。從安裝到實際應用,深入介紹了分詞、停用詞去除、詞性標註、命名實體識別等NLP任務的具體實現和步驟,幫助讀者理解和應用NLTK。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
在 TypeScript 中,套件是模組化代碼的集合,可以提高代碼的可重用性和可維護性。常見的套件包括各種庫和框架,如 lodash、express 等。以下是有關引用套件、自定義套件和常見套件的詳細介紹。
Thumbnail
上回我們講到 Word Embedding 能夠將字詞表示從使用字典索引改成詞向量表示,且這個詞向量能夠包含一定程度上的語義訊息,今天就讓我們探討 Word Embedding 到底是如何訓練成的。
Thumbnail
上回我們講到 Word Embedding 能夠將字詞表示從使用字典索引改成詞向量表示,且這個詞向量能夠包含一定程度上的語義訊息,今天就讓我們探討 Word Embedding 到底是如何訓練成的。
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
※ OPP第一大核心-封裝 封裝的精神在於將「方法」、「屬性」和「邏輯」包裝在類別裡面,透過類別的實例來實現。這樣外部物件不需要了解內部的實現細節,只需要知道如何使用該類別提供的接口即可。換句話說,封裝是將內部細節隱藏起來,只暴露必要的部分給使用者。 封裝的核心概念是,使用者如果想要接觸資料,只
Thumbnail
Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
Thumbnail
Python的模組和庫是可重用的程式碼塊,可透過import語句引入。特定部分可以透過from和import引入,並可使用as指定別名。第三方模組可透過pip工具安裝並在程式碼中使用。此外,也可以創建自定義模組並在其他Python文件中引用。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
有趣的是,Model 其實沒什麼嚴格的定義,所以每個人對 Model 的解讀也不盡相同,有人覺得資料怎麼儲存屬於 Model 的一部份 (受 ORM 工具的影響),有人覺得工作流程 (workflow) 是 Model 的一部份,我個人也有自己的想法,而且隨專案的規模和特性,也不是總是一樣的。
Thumbnail
有趣的是,Model 其實沒什麼嚴格的定義,所以每個人對 Model 的解讀也不盡相同,有人覺得資料怎麼儲存屬於 Model 的一部份 (受 ORM 工具的影響),有人覺得工作流程 (workflow) 是 Model 的一部份,我個人也有自己的想法,而且隨專案的規模和特性,也不是總是一樣的。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News