NLP 系列-2:文字向量化 - tfidf

更新 發佈閱讀 5 分鐘

文字資料該怎麼分析?

文字屬於非結構化資料,不像正常身高、體重、年紀等是直接的數值型結構化資料,無法直接在資料科學、機器學習中使用。

因此,需要將文字轉成數值才能進行後續處理,而此轉換又稱為向量化。

raw-image

目錄

  • 文字資料該怎麼分析?
  • 文字向量化
  • tf-idf 簡介
  • 如何在 Python 中使用
  • 最後

文字向量化

最簡單的文字向量化方法就屬於 BoW(Bag of Word) 了,又稱為詞袋模型。

詞袋模型是一個基於單詞出現頻率來表示文字的方法,它並不考慮單詞的排列順序、或甚至是文法結構。

比如說一個分詞後的幾個句子:

原始句子:「每天努力學習資料科學,是為了成為一個資料科學家。」經過分詞後(jieba),會變成「每天/努力/學習/資料/科學/是/為/了/成為/一個/資料/科學家/」,此時每一個/分隔而成的就是一個詞,就可以用 BoW 來表示。

「每天」:1, 「努力」: 1, 「資料」: 2,以此類推。

就可以將上面這句話用向量表示為11維的向量[1,1,1,2,1,1,1,1,1,1],後續就可以使用任何ML的模型作為特徵輸入了。

但是這個方法有一個巨大的缺陷,隨著句子變長,重複的詞其特徵值會越來越大,在遇到許多贅詞的時候會顯得不符使用。

因此,為了平衡權重的調整,在不同長度的句子都可以更好地表示,也就是 tf-idf 的出現了!


tf-idf 簡介

raw-image

有興趣可以去看看tf-idf定義,wiki講得很清楚!

這邊想與大家介紹的是 tf-idf 的背後直覺,tf 就是詞頻,也就是去數「詞」出現的頻率(機率),跟 BoW 沒有不同,而 idf 則是會根據該「詞」在各個檔案中出現的頻率倒數取 log,比如說我有 100 篇文章,而詞「科學家」只出現過 1 遍,那麼其 idf = log (100 / 1) = 2,如果在該篇文章中出現了 3 次(該文章總字數假設為100),則 tf = 3/100 = 0.03,就會得到 tf-idf = tf*idf = 0.03*2 = 0.06。

那我們可以看看相同另一個例子,如詞「是」可能就大量出現在各個文章中,比如 100 次,那麼 idf = log(100 / 100) = 1,而假設其中一篇文章的 tf 也為 0.03,其 tf-idf = 0.03*1 = 0.03。

可以發現,其數值在詞頻相同的情況下,因為出現在更多的文章中,就被限制了大小,可以達到贅詞會被限縮,而像「科學家」這樣比較有代表意義的則會給予比較大的權重。

tf-idf 背後的精神非常直覺,透過數學計算,將常出現在「各文章」的「詞」視為辨別度不高(idf),給予較低權重,但在「同一篇文章」中如果出現次數高(tf),可能具有代表意義,給予較高的權重,兩者互相平衡來表示。


如何在 Python 中使用(code snippet)

Python 的 sklearn 套件已經幫我們製作好了模組,其向量化只需要數行即可。後續即可輸入 ML 模型或者其他方法去分析。

ps: 還有許多超參數可供調整,可參考官方文件去研究唷!另外,此處套件會忽略「單字」,如果需要單字可以去更多研究唷!

from sklearn.feature_extraction.text import TfidfVectorizer# 已中文分詞
corpus = [
'我 是 優秀的 資料 科學 家',
'每天 學習 資料 科學 很 有趣']
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
vectorizer.get_feature_names() # ['優秀的', '學習', '有趣', '每天', '科學', '資料']
print(X.shape) # (2, 6)

最後

但 tf-idf 也有它自身的缺陷,如不考慮詞的擺放順序、詞與詞之間是獨立的、隨著詞庫增加,維度會爆炸且稀疏等等,不過在很多情況下,是一個非常實用的技術!

那這次的 NLP 系列就到這邊告一段落了!希望大家有學會一個新的文字向量化方法,也可以了解其背後的直覺!


如果覺得文章有幫助,也希望可以給我一些掌聲👏讓我更有動力繼續分享類似的主題,也歡迎提供任何主題想法哦!


參考

  • tf-idf wiki
  • sklearn.feature_extraction.text.TfidfVectorizer
留言
avatar-img
資料週週New的沙龍
1會員
3內容數
喜歡資料科學的朋友應該都有聽過 NLP(自然語言處理)的大名,日常生活的Gmail、Google Search、Spotify等等應用都有使用這個技術。希望透過這個系列與大家稍微分享一下我個人對於 NLP 的看法,讓我們一起探索這個有趣、迷人的領域吧!
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
1.0 從函數到函算語法 1.1 句子成份 本書關注的是句子成份的分析。 如前述,詞類和句子成份是兩個很不一樣的概念。 詞類的劃分屬歸類性的描述。我們先有一個給定的詞彙,然後劃分若干詞類,比如名詞﹑動詞﹑形容詞等,再進而對詞彙中的每一個詞進行分類,即說某詞屬名詞﹑某詞屬動詞﹑某詞可以是名
Thumbnail
1.0 從函數到函算語法 1.1 句子成份 本書關注的是句子成份的分析。 如前述,詞類和句子成份是兩個很不一樣的概念。 詞類的劃分屬歸類性的描述。我們先有一個給定的詞彙,然後劃分若干詞類,比如名詞﹑動詞﹑形容詞等,再進而對詞彙中的每一個詞進行分類,即說某詞屬名詞﹑某詞屬動詞﹑某詞可以是名
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
資料型態-變數概念 上面這張圖片傳傳達了三個概念, 常值:可以是數值、浮點數、字串、布林等資料, 變數名稱:這邊也很好理解,就是好記得名稱,這邊使用中文是方便初學者入門, 盒子:代表在Python底層運作的狀況,Python創建變數時,會先在記憶體創建型態物件,這邊是數字型態,所以創建數字物件。
Thumbnail
題目打包法(Item Parceling)是一種統計學方法,主要用於結構方程模式(SEM)中。打包法的基本思想是將多個觀察指標打包成一個新指標,以提高模型的擬合程度。打包法有很多優點,如提高模型的擬合程度和要求樣本數減少。但也有缺點,如不適合測量模型分析。本文將簡介題目打包法之策略。
Thumbnail
題目打包法(Item Parceling)是一種統計學方法,主要用於結構方程模式(SEM)中。打包法的基本思想是將多個觀察指標打包成一個新指標,以提高模型的擬合程度。打包法有很多優點,如提高模型的擬合程度和要求樣本數減少。但也有缺點,如不適合測量模型分析。本文將簡介題目打包法之策略。
Thumbnail
文字資料該怎麼分析? 文字屬於非結構化資料,不像正常身高、體重、年紀等是直接的數值型結構化資料,無法直接在資料科學、機器學習中使用。 因此,需要將文字轉成數值才能進行後續處理,而此轉換又稱為向量化。
Thumbnail
文字資料該怎麼分析? 文字屬於非結構化資料,不像正常身高、體重、年紀等是直接的數值型結構化資料,無法直接在資料科學、機器學習中使用。 因此,需要將文字轉成數值才能進行後續處理,而此轉換又稱為向量化。
Thumbnail
統全數理功用: 1.方便計算機計算過程直觀化,透過時輪系統,一步一步地理解計算過程 2.數理語言的統一規則化 3.可能方便初學者逐步理解   算法案例   二元算法 統全數理法化   次方/平方/立方.次方根,如何計算對數?   算法案例:加法與減法   算法案例:乘法除法
Thumbnail
統全數理功用: 1.方便計算機計算過程直觀化,透過時輪系統,一步一步地理解計算過程 2.數理語言的統一規則化 3.可能方便初學者逐步理解   算法案例   二元算法 統全數理法化   次方/平方/立方.次方根,如何計算對數?   算法案例:加法與減法   算法案例:乘法除法
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News