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

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

文字資料該怎麼分析?

文字屬於非結構化資料,不像正常身高、體重、年紀等是直接的數值型結構化資料,無法直接在資料科學、機器學習中使用。
因此,需要將文字轉成數值才能進行後續處理,而此轉換又稱為向量化。

目錄

  • 文字資料該怎麼分析?
  • 文字向量化
  • 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 簡介

tf-idf wiki 說明
有興趣可以去看看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 系列就到這邊告一段落了!希望大家有學會一個新的文字向量化方法,也可以了解其背後的直覺!

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

參考
喜歡資料科學的朋友應該都有聽過 NLP(自然語言處理)的大名,日常生活的Gmail、Google Search、Spotify等等應用都有使用這個技術。希望透過這個系列與大家稍微分享一下我個人對於 NLP 的看法,讓我們一起探索這個有趣、迷人的領域吧!
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
資料週週New的沙龍 的其他內容
文字、語言是生活中不可或缺的一部分,而隨著網路時代的開始,我們更多的活動轉往網路、手機中,而最常見的媒介就是文字(語言)了,不論是新聞、個人心得、心情分享、論文等等,都是透過文字來表達想法。而這麼多的內容,電腦是如何呈現出我們感興趣的內容呢?那首先就是需要讓電腦能夠去解讀、使用文字這種非結構化資料,
文字、語言是生活中不可或缺的一部分,而隨著網路時代的開始,我們更多的活動轉往網路、手機中,而最常見的媒介就是文字(語言)了,不論是新聞、個人心得、心情分享、論文等等,都是透過文字來表達想法。而這麼多的內容,電腦是如何呈現出我們感興趣的內容呢?那首先就是需要讓電腦能夠去解讀、使用文字這種非結構化資料,
你可能也想看
Google News 追蹤
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
一份研究指出,人類在關係中外遇的機率,幾乎是所有物種當中最高,這份研究也顯示,外遇的比例竟然遠超乎我們到想像,甚至可以說是高得離譜⋯⋯
Thumbnail
這篇文章探討了分手的多種原因,特別是金錢觀念、性觀念與感情變淡等問題,並分析各自的挽回機率,透過NLP愛情心理學的技巧,文章提供了有效的溝通與情感重建策略,幫助人們理解與應對分手的根本原因。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們從 AI說書 - 從0開始 - 103 至 AI說書 - 從0開始 - 105 的努力,已經完成資料集前處理,現在需要定義一個函數來加載這些清理過的數據集,並在預處
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 中的 Attention 機制是 'Word-to-Word' 操作,抑或是 'Token-to-Token' 操作,白話來講就是:「對於句子中
為了將輸入文本轉換成深度學習模型可以使用的嵌入向量, 我們需要先將「輸入文本 Input Text」轉為「符元化文本 Tokenized Text」。 而實際上「符元化文本 Tokenized Text」與「嵌入向量 Embedding Vector」之間, 還有一個步驟稱為「符元
Thumbnail
溝通的目的不是僅僅提供信息,而是讓對方接收並理解信息。 NLP的兩個假設前提:溝通的意義決定於對方的回饋、沒有失敗,只有回饋。
Thumbnail
最近國泰世華CUBE App推出的「美股定期定額」功能,讓使用者可以方便地進行跨境理財(但讀者仍需根據自身需求審慎考量),除了享有美股定期定額的新功能,也同時享有台股定期定額的功能,可以一站滿足我們理財的需求! 透過國泰世華CUBE App線上開台股證券戶+複委託戶,流程最快僅需要5分鐘。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
一份研究指出,人類在關係中外遇的機率,幾乎是所有物種當中最高,這份研究也顯示,外遇的比例竟然遠超乎我們到想像,甚至可以說是高得離譜⋯⋯
Thumbnail
這篇文章探討了分手的多種原因,特別是金錢觀念、性觀念與感情變淡等問題,並分析各自的挽回機率,透過NLP愛情心理學的技巧,文章提供了有效的溝通與情感重建策略,幫助人們理解與應對分手的根本原因。
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 在 AI說書 - 從0開始 - 127 中提及: Transformer 的關鍵參數為: 原始 Transformer 模型中,左圖的 N = 6 原始 Tran
Thumbnail
本文介紹了在進行資料分析時,將類別欄位轉換為數值欄位的方法,包括Label Encoding、One-Hot Encoding、Binary Encoding、Target Encoding和Frequency Encoding。每種方法的應用範例、優缺點和適用場景都有詳細說明。
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們從 AI說書 - 從0開始 - 103 至 AI說書 - 從0開始 - 105 的努力,已經完成資料集前處理,現在需要定義一個函數來加載這些清理過的數據集,並在預處
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 Transformer 中的 Attention 機制是 'Word-to-Word' 操作,抑或是 'Token-to-Token' 操作,白話來講就是:「對於句子中
為了將輸入文本轉換成深度學習模型可以使用的嵌入向量, 我們需要先將「輸入文本 Input Text」轉為「符元化文本 Tokenized Text」。 而實際上「符元化文本 Tokenized Text」與「嵌入向量 Embedding Vector」之間, 還有一個步驟稱為「符元
Thumbnail
溝通的目的不是僅僅提供信息,而是讓對方接收並理解信息。 NLP的兩個假設前提:溝通的意義決定於對方的回饋、沒有失敗,只有回饋。