# TFIDF筆記 ###### tags: `beginner` ## 主要想處理的問題 ### Bag of Words(詞袋) 假設現在有D篇文件,所有文件中有T個不同的詞彙 那我們就可以把一篇文件轉換成一個T維度的向量 而每一個向量的每一維度中,會放入一個數字,這個數字所代表的意思就是該字詞在這篇文件中所出現的次數 這就是一個BoW的演算法(Bag of Words) 這種方法會出現一些問題 * 每篇文章的總字數不同,比如說: * 「檸檬」在文件1出現了9次,但在文件2中只出現了2次,這樣是否代表「檸檬」在文件1的重要性就高過文件2呢? * ->其實不然,說不定文件1有10000個字詞,但文件2只有50個字,那這樣來看的話,「檸檬」對兩篇文件來說,應該是文件2相對重要得多 * 時常重複出現的慣用詞對一個文件影響很大: * 舉例來說,「the」這個英文字可以在一篇文件中常常出現,但實際上他並沒有太大的意義 於是為了處理上述兩個問題,就有了TF-IDF這個演算法的出現 ## TF-IDF ### 簡介 TF-IDF可以拆成兩個部分來看: * 詞類 (term frequency, TF) * 指某一個給定的詞語在該文件中出現的頻率,第t個詞在第d篇文件的頻率記成 $tf_{t,d}$ * 也就是說,若一個文件有100個字,而詞袋中的第1個字出現了10次,那 $tf_{1,1} = 10/100$,以頻率而不是次數來看待文字的重要性可以使得文章和文章之間比較有可比較性 * 逆向文件頻率 (inverse document frequency, IDF) * 用來處理常用字的問題 * 假設詞彙t在共 $d_t$ 篇文章中出現過,那詞彙t的IDF就會被定義成 $idf_t = log(D/d_t)$ * 比如說,若文字1總共在25篇不同的文件中出現過,那 $idf_1 = log(D/25)$,若詞彙t在很多篇文章中都出現過,就代表 $d_t$ 會很大,此時 $idf_t$ 就會比較小 ### 公式 也就是說,一個字對於一篇文件重要性的分數(score)就可以透過TF和IDF兩個指標計算出來 * $w_{t,d}=tf_{t,d} \times idf_t$ 最終我們就能計算出TF-IDF矩陣