SEO演算法之TF-IDF演算法
SEO演算法之TF-IDF演算法
1、TF-IDF演算法概念:
TF-IDF(term frequency–inverse document
frequency)是一種用於資訊檢索與資訊探勘的常用加權技術。TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式常被搜尋引擎應用,作為文件與用戶查詢之間相關程度的度量或評級。除了TF-IDF以外,網際網路上的搜尋引擎還會使用基於連結分析的評級方法,以確定文件在搜尋結果中出現的順序。TF-IDF(詞頻-逆文檔頻率)演算法是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。該演算法在數據挖掘、文本處理和信息檢索等領域得到了廣泛的應用,如從一篇文章中找到它的關鍵詞。
TFIDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TF-IDF實際上就是
TF*IDF,其中 TF(Term Frequency),表示詞條在文章Document 中出現的頻率;IDF(Inverse Document Frequency),其主要思想就是,如果包含某個詞 Word的文檔越少,則這個詞的區分度就越大,也就是 IDF 越大。對於如何獲取一篇文章的關鍵詞,我們可以計算這邊文章出現的所有名詞的 TF-IDF,TF-IDF越大,則說明這個名詞對這篇文章的區分度就越高,取 TF-IDF 值較大的幾個詞,就可以當做這篇文章的關鍵詞。2、TF-IDF演算法原理
在一份給定的文件里,詞頻 (term frequency, TF)
指的是某一個給定的詞語在該文件中出現的次數。這個數字通常會被歸一化(分子一般小於分母 區別於IDF),以防止它偏向長的文件。(同一個詞語在長文件里可能會比短文件有更高的詞頻,而不管該詞語重要與否。)逆向文件頻率 (inverse document frequency, IDF)
是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到。
某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。
TFIDF的主要思想是:如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。TFIDF實際上是:TF
* IDF,TF詞頻(Term Frequency),IDF反文檔頻率(Inverse Document Frequency)。TF表示詞條在文檔d中出現的頻率(另一說:TF詞頻(Term Frequency)指的是某一個給定的詞語在該文件中出現的次數)。IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大(見後續公式),則說明詞條t具有很好的類別區分能力。如果某一類文檔C中包含詞條t的文檔數為m,而其它類包含t的文檔總數為k,顯然所有包含t的文檔數n=m+k,當m大的時候,n也大,按照IDF公式得到的IDF的值會小,就說明該詞條t類別區分能力不強。(另一說:IDF反文檔頻率(Inverse Document Frequency)是指果包含詞條的文檔越少,IDF越大,則說明詞條具有很好的類別區分能力。)但是實際上,有時候,如果一個詞條在一個類的文檔中頻繁出現,則說明該詞條能夠很好代表這個類的文本的特徵,這樣的詞條應該給它們賦予較高的權重,並選來作為該類文本的特徵詞以區別與其它類文檔。這就是IDF的不足之處.在一份給定的文件里,詞頻(term frequency,TF)指的是某一個給定的詞語在該文件中出現的頻率。這個數字是對詞數(term
count)的歸一化,以防止它偏向長的文件。(同一個詞語在長文件里可能會比短文件有更高的詞數,而不管該詞語重要與否。)對於在某一特定文件里的詞語來說,它的重要性可表示為:
以上式子中
是該詞
在文件
中的出現次數,而分母則是在文件
中所有字詞的出現次數之和。
逆向文件頻率(inverse document
frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到:其中
|D|:語料庫中的文件總數
:包含詞語
的文件數目(即
的文件數目)如果該詞語不在語料庫中,就會導致被除數為零,因此一般情況下使用
然後
某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。
3、TF-IDF演算法利用Scikit-Learn實現
因為 TF-IDF
在文本數據挖掘時十分常用,所以在Python的機器學習包中也提供了內置的TF-IDF實現。主要使用的函數就是TfidfVectorizer(),來看一個簡單的例子。最終的結果是一個 4×94×9 矩陣。每行表示一個文檔,每列表示該文檔中的每個詞的評分。如果某個詞沒有出現在該文檔中,則相應位置就為 0 。數字 9
表示語料庫里辭彙表中一共有 9 個(不同的)詞。例如,你可以看到在文檔1中,並沒有出現 and,所以矩陣第一行第一列的值為 0 。單詞 first 只在文檔1中出現過,所以第一行中 first 這個詞的權重較高。而 document 和 this 在 3 個文檔中出現過,所以它們的權重較低。而 the 在 4 個文檔中出現過,所以它的權重最低。最後需要說明的是,由於函數 TfidfVectorizer()
有很多參數,我們這裡僅僅採用了默認的形式,所以輸出的結果可能與採用前面介紹的(最基本最原始的)演算法所得出之結果有所差異(但數量的大小關係並不會改變)。有興趣的讀者可以參考文獻[4]來了解更多關於在Scikit-Learn中執行 TF-IDF 演算法的細節。4、TF-IDF演算法總結
這演算法看似簡單,實際上在SEO搜索引擎優化啊,文本分類方面用的挺多的,面試時也常常作為資訊理論知識儲備來出題。
推薦閱讀:
※高斯過程簡介
※RF、GBDT、XGBoost常見面試題整理
※機器學習入門基礎——邏輯回歸
※人性本惡,機器本善?
※專家分享:入門深度學習應該學什麼