【自然語言處理 — 概念篇】最基礎的Bag-of-Words模型是什麼呢?

更新於 2023/05/26閱讀時間約 7 分鐘
常常我們在進行NLP討論時,不管哪一種NLP任務都會偶爾聽到BOW這個詞,原來全名就是「Bag-of-words」由名稱就可以知道這是在處理NLP任務之前的基礎工事,將一整篇文章切碎成一段語句,甚至是最小單位的「詞」,而這些詞又如何表述關係或者進一步的使用,試圖讓機器可以理解我們人類的詞語,就是基於BOW發展而來的。
既然是進入NLP世界的基礎,那我們就不得不來仔細了解一番,為什麼會有此命名呢? 轉譯成中文又可以稱為「詞袋」,就想像成專門裝各類糖果的袋子,每一種糖果可能會重複出現幾次,那麼在袋中的糖果,將各種不同種類統計之後,就能夠得出哪些糖果甚至進一步分這些糖果的種類(軟、硬糖...),而詞也是同樣的道理,統計出詞頻、詞的特徵,進一步分析出這段語句中可能帶有哪些情緒(正向、負向...),基本上就是透過一套演算法或資料結構幫我們進行前處理,以利後續的NLP任務進行。

BOW的處理過程

  1. 建構詞彙表: 將袋中的詞整理成一張表,這張表涵蓋了所有的詞。
  2. 標示特徵向量: 使用詞彙表的單詞做為特徵,建構一個特徵向量,維度與詞彙表的大小相同。
  3. 特徵表示應用: 將特徵向量應用於具體的NLP任務,如文本分類、情感分析、信息檢索等。這些特徵向量可以作為機器學習算法的輸入。
需要注意的是, BoW方法忽略了單詞的順序和語義信息, 只能說它的工法是讓機器讀懂我們語言的第一工序, 後續發展的NLP、機器學習都離不開BOW的影子, 後來也逐漸發現單純的BOW能看到的資訊並不多, 因此也衍生了後續的進階文本表示方法(TF-IDF、Word2Vec、BERT…等)。

不如動手做做看吧

安裝套件

  • scikit-learn:用於機器學習的Python套件, 擅長分類、回歸、聚類、降維、模型選擇和預處理等機器學習任務的工具和算法。
  • pandas: 對矩陣進行表格的處理。
  • jieba: 斷詞, 對中文進行分詞。
!pip install scikit-learn

!pip install pandas

!pip install jieba

下載中文字型讓圖表可以顯示中文

import matplotlib as mpl
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt

# 下載繁體中文字型
!wget -O SourceHanSerifTW-VF.ttf https://github.com/adobe-fonts/source-han-serif/raw/release/Variable/TTF/Subset/SourceHanSerifTW-VF.ttf

# 加入字型檔
fm.fontManager.addfont('SourceHanSerifTW-VF.ttf')

# 設定字型
#
mpl.rc('font', family='Source Han Serif TW VF')

定義文本數據集以及對應的標籤

這個步驟主要將我們需要進行處理的文本進行一維陣列的儲存,並且假設我們已經斷詞完畢。
corpus = [
"我喜歡吃水果",
"他喜歡喝咖啡",
"我喜歡漫畫書",
"他喜歡看電影"
]

自訂分詞器

以jieba進行
import jieba
def tokenizer(text):
return list(jieba.cut(text))th

轉換成特徵向量

指定自訂的斷詞器
from sklearn.feature_extraction.text import CountVectorizer

# 創建 BOW 特徵提取器
vectorizer = CountVectorizer(tokenizer=tokenizer)

# 通過 BOW 特徵提取器將文本轉換為特徵向量
features = vectorizer.fit_transform(corpus)

檢視詞彙表

feature_names = vectorizer.get_feature_names_out()
feature_names

# array(['他', '吃水果', '喜歡', '喝咖啡', '我', '書', '漫畫', '看', '電影'], dtype=object)

檢視特徵向量

print(features.toarray())

[[0 1 1 0 1 0 0 0 0]
[1 0 1 1 0 0 0 0 0]
[0 0 1 0 1 1 1 0 0]
[1 0 1 0 0 0 0 1 1]]

藉由pandas進行表格呈現

import pandas as pd
df = pd.DataFrame(features.toarray(), columns=feature_names)
df

繪製詞頻圖

import matplotlib.pyplot as plt
# 計算每個詞彙在所有句子中的總頻率
word_frequencies = features.sum(axis=0).A1

# 建立圖形
plt.figure(figsize=(10, 6))
plt.bar(range(len(feature_names)), word_frequencies)
plt.xticks(range(len(feature_names)), feature_names, rotation=45, fontsize=8)
plt.xlabel('詞彙')
plt.ylabel('頻率')
plt.title('詞彙頻率圖')

# 顯示圖形
plt.show()
今天的範例都在這裡「📦 bow.ipynb」歡迎自行取用。

結語

原來BOW的概念如此簡單,我們常常被華麗的名詞給阻礙了前進的動力,仔細拆解每一個步驟之後才知道原來我們日常生活中的詞語,要讓機器讀懂也是不容易的,但動手實作之後,將每一步記錄起來,並重複學習就不是那麼困難了,讓我們持續學習NLP的技術吧! 下一章我們將來談談詞的向量與嵌入。
------------------------------------------------------------------------------------------------
喜歡撰寫文章的你,不妨來了解一下:
歡迎加入一起練習寫作,賺取知識!
為什麼會看到廣告
avatar-img
116會員
261內容數
哈囉,我是阿Han,是一位 👩‍💻 軟體研發工程師,喜歡閱讀、學習、撰寫文章及教學,擅長以圖代文,化繁為簡,除了幫助自己釐清思路之外,也希望藉由圖解的方式幫助大家共同學習,甚至手把手帶您設計出高品質的軟體產品。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿Han的沙龍 的其他內容
Named Entity Recognition(NER)是一種自然語言處理技術,它的目的是識別文本中的具有特定意義的實體(也稱為命名實體)。這些命名實體可以是人名、地名、組織名、日期、時間、數量等等。 這項技術可以幫助機器更好地理解文本,提高自然語言處理的精度和效率,也可以用於許多應用場景,例如搜
上一篇「【Google Colab Python系列】 初探Whisper: 來對一段Youtube影片進行辨識吧!」我們介紹了Whisper的基本用法及功能,這次我們除了語音辨識之外,還要下載辨識後的字幕檔,我想這對於我們常常看到沒有字幕的影片,若想要進行辨識與翻譯時非常有幫助。 這次的篇章主要做
這個篇章主要是讓我們能夠熟悉Whisper的安裝與使用方式,並簡單的對Youtube影片進行線上翻譯的工作,主軸在於了解一下整個Whisper使用方式到底是簡單還是複雜,就讓我們一起來玩玩看吧! 在這之前我們還是說一下Whisper它是什麼樣的一個工具,能夠做什麼? Whisper 是OpenAI
Named Entity Recognition(NER)是一種自然語言處理技術,它的目的是識別文本中的具有特定意義的實體(也稱為命名實體)。這些命名實體可以是人名、地名、組織名、日期、時間、數量等等。 這項技術可以幫助機器更好地理解文本,提高自然語言處理的精度和效率,也可以用於許多應用場景,例如搜
上一篇「【Google Colab Python系列】 初探Whisper: 來對一段Youtube影片進行辨識吧!」我們介紹了Whisper的基本用法及功能,這次我們除了語音辨識之外,還要下載辨識後的字幕檔,我想這對於我們常常看到沒有字幕的影片,若想要進行辨識與翻譯時非常有幫助。 這次的篇章主要做
這個篇章主要是讓我們能夠熟悉Whisper的安裝與使用方式,並簡單的對Youtube影片進行線上翻譯的工作,主軸在於了解一下整個Whisper使用方式到底是簡單還是複雜,就讓我們一起來玩玩看吧! 在這之前我們還是說一下Whisper它是什麼樣的一個工具,能夠做什麼? Whisper 是OpenAI
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
大語言模型,例如OpenAI提供的ChatGPT,是過去幾年發展的深度神經網路模型,開啟自然語言處理的新紀元。
Thumbnail
對於熱衷於語言科技的你, 大語言模型(LLMs)在自然語言處理(NLP)領域的發展無疑是一個革命性的進展。 從傳統的規則系統到基於深度學習的方法, LLMs展現了在理解、生成和翻譯人類語言方面的巨大突破。 這不僅是技術上的飛躍, 更是開啟了新的應用和可能性。 下面將介紹這一變革帶來的三大
Thumbnail
前一篇我們已經介紹了四個可以去完成的NLP專案, 7 種 NLP 專案,讓你成為自然語言處理好手 (上) 接下來我們繼續分享另外幾個很常使用的專案 機器翻譯 (Machine Translation)
Thumbnail
自然語言處理(NLP)已經重新塑造我們與世界各地的資訊互動和機器溝通方式。NLP融合了電腦科學、語言學和人工智慧,致力於讓電腦能夠以反映人類認知的方式理解、解釋和生成人類語言。 對於寫程式的人而言,實戰勝過一切,透過實際參與NLP專案以獲得實務經驗,對於成為優秀的資料科學家或NLP工程師非常重
Thumbnail
自然語言處理(NLP)透過深度學習和大數據,讓電腦理解語言、實現對話、翻譯等功能。然而,NLP也面臨失業風險和數據偏見等挑戰。建立政策法規確保公平使用,關注倫理和法律,實現NLP的可持續發展。
Thumbnail
自然語言處理(Natural Language Processing, NLP)是一個引人注目的領域,通過應用機器學習和人工智能技術,使機器能夠理解和處理人類的語言。其中,語意分析是NLP中一個重要的應用領域,它關注如何理解文本的意思和情感。
Thumbnail
探索 ChatGPT,這是一項尖端技術,利用自然語言處理提供複雜的回應並不斷學習和改進。了解 ChatGPT 的歷史、應用和對社會可能帶來的影響。ChatGPT 在醫療、金融、教育和娛樂等領域有廣泛的應用。探索這項技術在各個領域中的幫助方式。ChatGPT 有可能改變我們與技術和工具互動的方式。了解
Thumbnail
以太坊因為有了智能合約而獲得很大的便利性與彈性,智能合約的出現讓原本單純的金流交易功能延伸了許多的擴充功能。這使得合約的安全性受到重視。搭上近年熱門的AI風潮,NLP是一種可以檢測合約安全的新方法。
Thumbnail
文字、語言是生活中不可或缺的一部分,而隨著網路時代的開始,我們更多的活動轉往網路、手機中,而最常見的媒介就是文字(語言)了,不論是新聞、個人心得、心情分享、論文等等,都是透過文字來表達想法。而這麼多的內容,電腦是如何呈現出我們感興趣的內容呢?那首先就是需要讓電腦能夠去解讀、使用文字這種非結構化資料,
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
大語言模型,例如OpenAI提供的ChatGPT,是過去幾年發展的深度神經網路模型,開啟自然語言處理的新紀元。
Thumbnail
對於熱衷於語言科技的你, 大語言模型(LLMs)在自然語言處理(NLP)領域的發展無疑是一個革命性的進展。 從傳統的規則系統到基於深度學習的方法, LLMs展現了在理解、生成和翻譯人類語言方面的巨大突破。 這不僅是技術上的飛躍, 更是開啟了新的應用和可能性。 下面將介紹這一變革帶來的三大
Thumbnail
前一篇我們已經介紹了四個可以去完成的NLP專案, 7 種 NLP 專案,讓你成為自然語言處理好手 (上) 接下來我們繼續分享另外幾個很常使用的專案 機器翻譯 (Machine Translation)
Thumbnail
自然語言處理(NLP)已經重新塑造我們與世界各地的資訊互動和機器溝通方式。NLP融合了電腦科學、語言學和人工智慧,致力於讓電腦能夠以反映人類認知的方式理解、解釋和生成人類語言。 對於寫程式的人而言,實戰勝過一切,透過實際參與NLP專案以獲得實務經驗,對於成為優秀的資料科學家或NLP工程師非常重
Thumbnail
自然語言處理(NLP)透過深度學習和大數據,讓電腦理解語言、實現對話、翻譯等功能。然而,NLP也面臨失業風險和數據偏見等挑戰。建立政策法規確保公平使用,關注倫理和法律,實現NLP的可持續發展。
Thumbnail
自然語言處理(Natural Language Processing, NLP)是一個引人注目的領域,通過應用機器學習和人工智能技術,使機器能夠理解和處理人類的語言。其中,語意分析是NLP中一個重要的應用領域,它關注如何理解文本的意思和情感。
Thumbnail
探索 ChatGPT,這是一項尖端技術,利用自然語言處理提供複雜的回應並不斷學習和改進。了解 ChatGPT 的歷史、應用和對社會可能帶來的影響。ChatGPT 在醫療、金融、教育和娛樂等領域有廣泛的應用。探索這項技術在各個領域中的幫助方式。ChatGPT 有可能改變我們與技術和工具互動的方式。了解
Thumbnail
以太坊因為有了智能合約而獲得很大的便利性與彈性,智能合約的出現讓原本單純的金流交易功能延伸了許多的擴充功能。這使得合約的安全性受到重視。搭上近年熱門的AI風潮,NLP是一種可以檢測合約安全的新方法。
Thumbnail
文字、語言是生活中不可或缺的一部分,而隨著網路時代的開始,我們更多的活動轉往網路、手機中,而最常見的媒介就是文字(語言)了,不論是新聞、個人心得、心情分享、論文等等,都是透過文字來表達想法。而這麼多的內容,電腦是如何呈現出我們感興趣的內容呢?那首先就是需要讓電腦能夠去解讀、使用文字這種非結構化資料,