TF-IDF算法詳解

什麼是TF/IDF?

其實這是兩個詞的組合,TF與IDF。
TF(Term Frequency詞頻)即一個詞在文中出現的次數,統計出來就是詞頻TF。
IDF(Inverse Document Frequency)即逆文檔頻率。

對於詞頻,顯而易見一個詞在文章中出現很多次,那麼這個詞肯定有很大的作用。但是你自己動手試一下會發現TF大的大都是"的“,“是"這樣的詞,這樣的詞顯然對我們的統計沒什麼幫助,反而有的時候會干擾我們的統計,當然我們需要把這些沒有用的詞給去掉,現在有很多可以去除這些詞的方法,比如使用一些停用詞的語料庫等。
假設我們把它們都過濾掉了,只考慮剩下的有實際意義的詞。這樣又會遇到了另一個問題,我們可能發現"中國”、“蜜蜂”、"養殖"這三個詞的出現次數一樣多。這是不是意味着,作爲關鍵詞,它們的重要性是一樣的?
顯然不是這樣。因爲"中國"是很常見的詞,相對而言,“蜜蜂"和"養殖"不那麼常見。如果這三個詞在一篇文章的出現次數一樣多,有理由認爲,“蜜蜂"和"養殖"的重要程度要大於"中國”,也就是說,在關鍵詞排序上面,“蜜蜂"和"養殖"應該排在"中國"的前面。
所以,我們需要一個重要性調整係數,衡量一個詞是不是常見詞。如果某個詞比較少見,但是它在這篇文章中多次出現,那麼它很可能就反映了這篇文章的特性,正是我們所需要的關鍵詞。
綜上,我們需要在詞頻的基礎上,對每個關鍵詞分配一個權重,常見的詞給予小的權重,不常見的給予較大的權重。這時候我們的“IDF”就上場了,他的大小與一個詞的常見程度成反比
知道了"詞頻”(TF)和"逆文檔頻率”(IDF)以後,將這兩個值相乘,就得到了一個詞的TF-IDF值。某個詞對文章的重要性越高,它的TF-IDF值就越大。所以,排在最前面的幾個詞,就是這篇文章的關鍵詞。

計算公式

1.計算詞頻TF

{%asset_img 1.png %}
考慮到文章有長短之分,爲了便於不同文章的比較,進行"詞頻"標準化。
{%asset_img 2.png %}
或者{%asset_img 3.png %}

2.計算逆文檔頻率IDF

需要一個語料庫(corpus),用來模擬語言的使用環境。
{%asset_img 4.png %}
** 如果一個詞越常見,那麼分母就越大,逆文檔頻率就越小越接近0。分母之所以要加1,是爲了避免分母爲0(即所有文檔都不包含該詞)。log表示對得到的值取對數。**

3.計算TF-IDF

{%asset_img 5.png %}
可以看到,TF-IDF與一個詞在文檔中的出現次數成正比,與該詞在整個語言中的出現次數成反比。所以,自動提取關鍵詞的算法就很清楚了,就是計算出文檔的每個詞的TF-IDF值,然後按降序排列,取排在最前面的幾個詞。
除了自動提取關鍵詞,TF-IDF算法還可以用於許多別的地方。比如,信息檢索時,對於每個文檔,都可以分別計算一組搜索詞(“中國”、“蜜蜂”、“養殖”)的TF-IDF,將它們相加,就可以得到整個文檔的TF-IDF。這個值最高的文檔就是與搜索詞最相關的文檔。
TF-IDF算法的優點是簡單快速,結果比較符合實際情況。缺點是,單純以"詞頻"衡量一個詞的重要性,不夠全面,有時重要的詞可能出現次數並不多。而且,這種算法無法體現詞的位置信息,出現位置靠前的詞與出現位置靠後的詞,都被視爲重要性相同,這是不正確的。一種解決方法是,對全文的第一段和每一段的第一句話,給予較大的權重。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章