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
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
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