tf-idf有兩層意思,一層是"詞頻"(term frequency,縮寫為tf),另一層是"逆文件頻率"(inverse document frequency,縮寫為idf)。
在乙份給定的檔案裡,詞頻 (term frequency, tf) 指的是某乙個給定的詞語在該檔案**現的次數。
逆向檔案頻率 (inverse document frequency, idf) 是乙個詞語普遍重要性的度量。
假如我們現在有一篇文章叫做《卷積神經網路模型的搭建》,我們對詞彙的tf進行統計,可以統計出卷積、池化等詞彙在裡面出現的次數比較多,所以是裡面的主要詞彙,這些詞彙有助於我們理解文章。但是這樣會有停用詞干擾,例如「的」,「了」等。這些詞對於我們理解文章沒什麼用處,所以我們還需要引入idf,通過觀察這個詞彙在其他文章出現的頻率來看這個詞是否對文章的處理很重要。
第一步,計算詞頻:
考慮到文章有長短之分,為了便於不同文章的比較,進行"詞頻"標準化。
第二步,計算逆文件頻率:
這時,需要乙個語料庫(corpus),用來模擬語言的使用環境。
如果乙個詞越常見,那麼分母就越大,逆文件頻率就越小越接近0。分母之所以要加1,是為了避免分母為0(即所有文件都不包含該詞)。log表示對得到的值取對數。
第三步,計算tf-idf:
優缺點tf-idf的優點是簡單快速,而且容易理解。
缺點是有時候用詞頻來衡量文章中的乙個詞的重要性不夠全面,有時候重要的詞出現的可能不夠多,而且這種計算無法體現位置資訊,無法體現詞在上下文的重要性。如果要體現詞的上下文結構,那麼你可能需要使用word2vec演算法來支援。
因為sklearn有這個函式,我就直接呼叫,這個任務是接著上乙個的,我就展示這個任務的**
import pandas as pd
from sklearn.feature_extraction.text import tfidfvectorizer
import pickle
vectorizer = tfidfvectorizer(ngram_range=(1, 2), min_df=3, max_df=0.9, sublinear_tf=true)#匯入函式,並且定義好函式初始值
vectorizer.fit(train_set['word_seg'])
x_train = vectorizer.transform(train_set['word_seg'])
x_val = vectorizer.transform(val_set['word_seg'])
參考文獻: TF IDF原理與實踐
在資訊檢索中,tf idf 詞頻 逆文件頻率 是一種統計方法,用以評估乙個單詞在乙個文件集合或語料庫中的重要程度。經常被用作資訊檢索 文字挖掘以及使用者模型的權重因素。tf idf的值會隨著單詞在文件 現的次數的增加而增大,也會隨著單詞在語料庫 現的次數的增多而減小。tf idf是如今最流行的詞頻加...
PCA理論與實踐
pca作用 降維,pca試圖在力保資料資訊丟失最少的原則下,用較少的綜合變數代替原本較多的變數,而且綜合變數間互不相關,減少冗餘以及盡量消除雜訊.pca的計算步驟 假設樣本觀測資料矩陣為 1.對原始資料標準化處理 0均值化處理 2.計算樣本相關係數矩陣 3.計算協方差矩陣的特徵值和特徵向量 4.選擇...
https理論與實踐
本文內容分為以下三部分 part1 https協議 普通的http請求,在通訊雙方建立了tcp連線之後,就可以進行了。而https則不同,在建立tcp連線之後,需要先進行ssl協議的握手過程,然後才是http的通訊。ssl的握手過程如下圖所示 alice想要與bob進行https的通訊,需要以下幾步...