您好,登錄后才能下訂單哦!
本篇內容主要講解“機器學習中詞袋模型和TF-IDF怎么理解”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“機器學習中詞袋模型和TF-IDF怎么理解”吧!
我將用一個流行的例子來解釋本文中的Bag of Words(BoW)和TF-IDF。
我們都喜歡看電影(不同程度)。在我決定看一部電影之前,我總是先看它的影評。我知道你們很多人也這么做!所以,我在這里用這個例子。
以下是關于某部恐怖電影的評論示例:
點評一:This movie is very scary and long
點評二:This movie is not scary and is slow
點評三:This movie is spooky and good
你可以看到關于這部電影的一些對比評論,以及電影的長度和節奏。想象一下看一千篇這樣的評論是多么枯燥。顯然,我們可以從中汲取很多有趣的東西,并以此為基礎來衡量電影的表現。
然而,正如我們在上面看到的,我們不能簡單地把這些句子交給機器學習模型,讓它告訴我們一篇評論是正面的還是負面的。我們需要執行某些文本預處理步驟。
“詞袋”和TF-IDF就是兩個這樣做的例子。讓我們詳細了解一下。
你能想出一些我們可以在一開始就把一個句子向量化的技巧嗎?基本要求是:
它不應該導致稀疏矩陣,因為稀疏矩陣會導致高計算成本
我們應該能夠保留句子中的大部分語言信息
詞嵌入是一種利用向量表示文本的技術。還有2種單詞嵌入形式是:
Bow,代表詞袋
TF-IDF,代表詞頻-逆文本頻率
現在,讓我們看看如何將上述電影評論表示為嵌入,并為機器學習模型做好準備。
詞袋(BoW)模型是數字文本表示的最簡單形式。像單詞本身一樣,我們可以將一個句子表示為一個詞向量包(一個數字串)。
讓我們回顧一下我們之前看到的三種類型的電影評論:
點評一:This movie is very scary and long
點評二:This movie is not scary and is slow
點評三:This movie is spooky and good
我們將首先從以上三篇評論中所有的獨特詞匯中構建一個詞匯表。詞匯表由這11個單詞組成:“This”、“movie”、“is”、“very”、“stear”、“and”、“long”、“not”、“slow”、“spooky”、“good”。
現在,我們可以將這些單詞中的每一個用1和0標記在上面的三個電影評論中。這將為我們提供三個用于三個評論的向量:
點評向量1:[1 1 1 1 1 1 0 0 0 0]
點評向量2:[1 1 2 0 0 1 0 1 0 0 0]
點評向量3:[1 1 1 0 0 0 1 0 1 1 1 1]
這就是“詞袋”(BoW)模型背后的核心思想。
在上面的例子中,我們可以得到長度為11的向量。然而,當我們遇到新的句子時,我們開始面臨一些問題:
如果新句子包含新詞,那么我們的詞匯量就會增加,因此向量的長度也會增加。
此外,向量還包含許多0,從而產生稀疏矩陣(這是我們希望避免的)
我們沒有保留任何關于句子語法和文本中單詞順序的信息。
我們先對TF-IDF下一個正式定義。百科是這樣說的:
“TF-IDF(term frequency–inverse document frequency)是一種用于信息檢索與數據挖掘的常用加權技術。TF是詞頻(Term Frequency),IDF是逆文本頻率指數(Inverse Document Frequency)”
術語頻率(TF)
首先讓我們理解術語頻繁(TF)。它是衡量一個術語t在文檔d中出現的頻率:
這里,在分子中,n是術語“t”出現在文檔“d”中的次數。因此,每個文檔和術語都有自己的TF值。
我們再次使用我們在詞袋模型中構建的相同詞匯表來演示如何計算電影點評2:
點評 2: This movie is not scary and is slow
這里
詞匯:“This”,“movie”,“is”,“very”,“stear”,“and”,“long”,“not”,“slow”,“spooky”,“good”
點評2的單詞數=8
單詞“this”的TF=(點評2中出現“this”的次數)/(點評2中的單詞數)=1/8
同樣地
TF(‘movie’) = 1/8
TF(‘is’) = 2/8 = 1/4
TF(‘very’) = 0/8 = 0
TF(‘scary’) = 1/8
TF(‘and’) = 1/8
TF(‘long’) = 0/8 = 0
TF(‘not’) = 1/8
TF(‘slow’) = 1/8
TF( ‘spooky’) = 0/8 = 0
TF(‘good’) = 0/8 = 0
我們可以這樣計算所有點評的詞頻:
IDF是衡量一個術語有多重要的指標。我們需要IDF值,因為僅計算TF不足以理解單詞的重要性:
我們可以計算點評2中所有單詞的IDF值:
IDF('this')=log(文檔數/包含“this”一詞的文檔數)=log(3/3)=log(1)=0
同樣地,
IDF(‘movie’, ) = log(3/3) = 0
IDF(‘is’) = log(3/3) = 0
IDF(‘not’) = log(3/1) = log(3) = 0.48
IDF(‘scary’) = log(3/2) = 0.18
IDF(‘and’) = log(3/3) = 0
IDF(‘slow’) = log(3/1) = 0.48
我們可以計算每個單詞的IDF值。因此,整個詞匯表的IDF值為:
因此,我們看到“is”、“this”、“and”等詞被降為0,代表重要性很小;而“scary”、“long”、“good”等詞則更為重要,因而具有更高的權值。
我們現在可以計算語料庫中每個單詞的TF-IDF分數。分數越高的單詞越重要,分數越低的單詞越不重要:
現在,我們可以計算點評2中每個單詞的TF-IDF分數:
TF-IDF(‘this’, Review 2) = TF(‘this’, Review 2) * IDF(‘this’) = 1/8 * 0 = 0
同樣地
TF-IDF(‘movie’, Review 2) = 1/8 * 0 = 0
TF-IDF(‘is’, Review 2) = 1/4 * 0 = 0
TF-IDF(‘not’, Review 2) = 1/8 * 0.48 = 0.06
TF-IDF(‘scary’, Review 2) = 1/8 * 0.18 = 0.023
TF-IDF(‘and’, Review 2) = 1/8 * 0 = 0
TF-IDF(‘slow’, Review 2) = 1/8 * 0.48 = 0.06
同樣地,我們可以計算出對于所有評論的所有單詞的TF-IDF分數:
我們現在已經獲得了我們詞匯的TF-IDF分數。TF-IDF還為頻率較低的單詞提供較大的值,并且當IDF和TF值都較高時,該值較高。TF-IDF分值高代表該單詞在所有文檔中都很少見,但在單個文檔中很常見。
到此,相信大家對“機器學習中詞袋模型和TF-IDF怎么理解”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。