1 算法介紹
該算法是一種用於資訊檢索和資訊探勘的常用加權技術。
該算法是一種統計方法,用以評估一字詞對於一個文本集(語料庫)中的其中一份文本的重要程度。
注意:字詞的重要性隨着它在文本中出現的次數成比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。
2 原理
2.1 詞頻(term frequency, TF)
定義:指給定的詞語在該文本中出現的次數。
補充:通常該數字會被歸一化(分子一般小於分母,區別於IDF),以防止它偏向長的文本(同一個詞在長文本里可能會比短文本有更高的詞頻,而不管該詞重要與否)。
對於在某一特定文本里的詞語${t_i}$來說,它的詞頻可表示為:
\[t{f_{i,j}} = \frac{{{n_{i,j}}}}{{\sum\nolimits_k {{n_{i,j}}} }}\]
式中分子是詞語${t_i}$在文本${d_j}$中出現的次數,而分母則是文本${d_j}$中所有字詞出現的次數之和。
注:下標$i$對應所有的詞,下標$j$對應所有的文本,$i$、$j$表示詞$i$在文本$j$中···
2.2 逆向文本頻率(inverse document frequency, IDF)
定義:度量一個詞語普遍重要程度。
某一特定詞語的IDF,可以由總文本數目除以包含該詞語之文本數目,再將得到的商取對數得到:
\[id{f_i} = \log \frac{{\left| D \right|}}{{\left| {\left\{ {j:{t_i} \in {d_j}} \right\}} \right|}} \approx \log \frac{{\left| D \right| + 1}}{{\left| {\left\{ {j:{t_i} \in {d_j}} \right\}} \right| + 1}}\]
式中分子代表語料庫中的總文件數,分母代表包含詞語${t_i}$的文本數目(即${n_{i,j}} \ne 0$的文本數目)。
注:如果該詞不在語料庫中,就會導致分母為0,故一般采用后者約等處理。(注意這里涉及到平滑化處理,常用的方法:加一法、線性插值法和折扣法)
注:如果包含某個詞語的文本越少,也就是分母越小,則IDF值越大,說明該詞語具有很好的類區分能力。
2.3 TF-IDF計算
如果某個詞語在一篇文章中出現的頻率高。並且在其他文章中很少出現,則認為該詞語具有很好的類區分能力,適合用於分類。
TF-IDF實際上為:
\[tfid{f_{i,j}} = t{f_{i,j}} \times id{f_i}\]
即某一特征文本內的高詞語頻率,以及該詞語在整個文本集合中的低文本頻率,可以產生出高權重的TF-IDF值。因此,TF-IDF傾向於過濾掉常用的詞語,保留重要的詞語。
3 不足之處
如果某一類文檔$C$中包含詞語$t$的文本數為$m$,而其他類包含詞語$t$的文本數為$k$,顯然所有包含詞語$t$的文本數$n = m + k$,當$m$大的時候$n$也大,按照公式得到的IDF值會小,就說明詞語$t$的類分能力不強。
但實際上,如果一個詞語在一個類的文本中頻繁出現,則說明該詞語能夠很好代表這個類的文本特征,這樣的詞語應該給它們賦予較高的權重,並選來作為該類文本的特征詞以區別於其他類文本,這就是IDF的不足之處。
除此外,還有以下不足之處:
- 對於新詞給予一個較大的權重是否合適?
- TF-IDF僅僅綜合考慮了該詞語在文檔中的重要程度和文檔區分度。
- TF-IDF沒有考慮特征詞在類間的分布。特征選擇所選擇的特征應該在某類出現多,而其他類出現少,即考察各類的文檔頻率的差異。如果一個特征詞在各類間分布比較均勻,這樣的詞語對分類基本沒有貢獻;但是如果一個特征詞比較集中地分布在某個類中,而在其它類中幾乎不出現,這樣的詞語卻能夠很好地代表這個類的特征,而TF-IDF不能區分這兩種情況。總而言之,即TF-IDF計算的權重不適用於分類。
- TF-IDF沒有考慮特征詞在類內部文檔中的分布情況。在類內部的文檔中,如果特征詞均勻分布在其中,則這個特征詞能夠很好地代表這個類的特征,如果只在幾篇文檔中出現,而在此類的其他文檔中不出現,顯然這樣的特征詞不能夠代表這個類的特征。