TF-IDF 加權及其應用
TF-IDF(term frequency–inverse document frequency)是一種用於資訊檢索的常用加權技術。TF-IDF是一種統計方法,用以評估某個單詞對於一個文檔集合(或一個語料庫)中的其中一份文件的重要程度。單詞的重要性隨着它在文件中出現的次數成正比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式常被搜尋引擎應用,作為文件與用戶查詢之間相關程度的度量或評級。
一、原理
在一份給定的文件里,詞頻 (term frequency, TF) 指的是某一個給定的單詞在該文件中出現的次數。這個數字通常會被歸一化,以防止它偏向長的文件(同一個單詞在長文件里可能會比短文件有更高的詞頻,而不管該詞語重要與否)。
逆向文件頻率 (inverse document frequency, IDF) 是一個單詞普遍重要性的度量。某一特定單詞的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到。IDF是一個全局因子,其考慮的不是文檔本身的特征,而是特征單詞之間的相對重要性。特征詞出現在其中的文檔數目越多,IDF值越低,這個詞區分不同文檔的能力就越差。
IDF(w)=log(n/docs(w, D))
TF-IDF的主要思想是:如果某個單詞在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。
二、應用
1、搜索引擎
2、自動提取關鍵詞
比如我們要想提取一篇新聞的關鍵詞,先要對該新聞進行分詞,然后根據TF-IDF計算每個單詞的權重,並將權重最大的N個單詞作為此新聞的關鍵詞。
3、找出相似文章
計算大概過程如下(更詳細內容可參考這里):
- 使用TF-IDF算法,找出兩篇文章的關鍵詞;
- 每篇文章各取出若干個關鍵詞(比如20個),合並成一個集合,計算每篇文章對於這個集合中的詞的詞頻(為了避免文章長度的差異,可以使用相對詞頻);
- 生成兩篇文章各自的詞頻向量;
- 計算兩個向量的余弦相似度(如下圖),值越大就表示越相似。
4、自動摘要
2007年,美國學者的論文《A Survey on Automatic Text Summarization》(Dipanjan Das, Andre F.T. Martins, 2007)總結了目前的自動摘要算法。其中很重要的一種就是詞頻統計,這種方法最早出自1958年的IBM公司科學家H.P. Luhn的論文《The Automatic Creation of Literature Abstracts》。
Luhn博士認為,文章的信息都包含在句子中,有些句子包含的信息多,有些句子包含的信息少。"自動摘要"就是要找出那些包含信息最多的句子。句子的信息量用"關鍵詞"來衡量。如果包含的關鍵詞越多,就說明這個句子越重要。Luhn提出用"簇"(cluster)表示關鍵詞的聚集。所謂"簇"就是包含多個關鍵詞的句子片段。
上圖就是Luhn原始論文的插圖,被框起來的部分就是一個"簇"。只要關鍵詞之間的距離小於"門檻值",它們就被認為處於同一個簇之中。Luhn建議的門檻值是4或5。也就是說,如果兩個關鍵詞之間有5個以上的其他詞,就可以把這兩個關鍵詞分在兩個簇。
下一步,對於每個簇,都計算它的重要性分值。
以前圖為例,其中的簇一共有7個詞,其中4個是關鍵詞。因此,它的重要性分值等於 ( 4 x 4 ) / 7 = 2.3。
然后,找出包含分值最高的簇的句子(比如5句),把它們合在一起,就構成了這篇文章的自動摘要。
PS:Luhn的這種算法后來被簡化,不再區分"簇",只考慮句子包含的關鍵詞。
參考文檔:
http://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html
http://www.ruanyifeng.com/blog/2013/03/tf-idf.html
http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html
http://www.ruanyifeng.com/blog/2013/03/automatic_summarization.html