NLP:生動理解TF-IDF算法
什么是TF-IDF?
TF-IDF(term frequency–inverse document frequency)是一種用于信息檢索與數(shù)據(jù)挖掘的常用加權(quán)技術(shù),常用于挖掘文章中的關(guān)鍵詞,而且算法簡單高效,常被工業(yè)用于最開始的文本數(shù)據(jù)清洗。
TF-IDF有兩層意思,一層是"詞頻"(Term Frequency,縮寫為TF),另一層是"逆文檔頻率"(Inverse Document Frequency,縮寫為IDF)。


假設(shè)我們現(xiàn)在有一片長文叫做《量化系統(tǒng)架構(gòu)設(shè)計(jì)》詞頻高在文章中往往是停用詞,“的”,“是”,“了”等,這些在文檔中最常見但對結(jié)果毫無幫助、需要過濾掉的詞,用TF可以統(tǒng)計(jì)到這些停用詞并把它們過濾。當(dāng)高頻詞過濾后就只需考慮剩下的有實(shí)際意義的詞。
但這樣又會遇到了另一個問題,我們可能發(fā)現(xiàn)"量化"、"系統(tǒng)"、"架構(gòu)"這三個詞的出現(xiàn)次數(shù)一樣多。這是不是意味著,作為關(guān)鍵詞,它們的重要性是一樣的?事實(shí)上系統(tǒng)應(yīng)該在其他文章比較常見,所以在關(guān)鍵詞排序上,“量化”和“架構(gòu)”應(yīng)該排在“系統(tǒng)”前面,這個時候就需要IDF,IDF會給常見的詞較小的權(quán)重,它的大小與一個詞的常見程度成反比。
當(dāng)有TF(詞頻)和IDF(逆文檔頻率)后,將這兩個詞相乘,就能得到一個詞的TF-IDF的值。某個詞在文章中的TF-IDF越大,那么一般而言這個詞在這篇文章的重要性會越高,所以通過計(jì)算文章中各個詞的TF-IDF,由大到小排序,排在最前面的幾個詞,就是該文章的關(guān)鍵詞。

TF-IDF算法步驟
第一步,計(jì)算詞頻:

考慮到文章有長短之分,為了便于不同文章的比較,進(jìn)行"詞頻"標(biāo)準(zhǔn)化。

第二步,計(jì)算逆文檔頻率:
這時,需要一個語料庫(corpus),用來模擬語言的使用環(huán)境。

如果一個詞越常見,那么分母就越大,逆文檔頻率就越小越接近0。分母之所以要加1,是為了避免分母為0(即所有文檔都不包含該詞)。log表示對得到的值取對數(shù)。
第三步,計(jì)算TF-IDF:

可以看到,TF-IDF與一個詞在文檔中的出現(xiàn)次數(shù)成正比,與該詞在整個語言中的出現(xiàn)次數(shù)成反比。所以,自動提取關(guān)鍵詞的算法就很清楚了,就是計(jì)算出文檔的每個詞的TF-IDF值,然后按降序排列,取排在最前面的幾個詞。
優(yōu)缺點(diǎn)
TF-IDF的優(yōu)點(diǎn)是簡單快速,而且容易理解。缺點(diǎn)是有時候用詞頻來衡量文章中的一個詞的重要性不夠全面,有時候重要的詞出現(xiàn)的可能不夠多,而且這種計(jì)算無法體現(xiàn)位置信息,無法體現(xiàn)詞在上下文的重要性。如果要體現(xiàn)詞的上下文結(jié)構(gòu),那么你可能需要使用word2vec算法來支持。
示例代碼

本文轉(zhuǎn)載自 沐白AI筆記,作者: 沐白

















