引言
在信息檢索, 文本挖掘和自然語言處理領域, IF-IDF 這個名字, 從它在 20 世紀 70 年代初被發明, 已名震江湖近半個世紀而不曾衰歇. 它表示的簡單性, 應用的有效性, 使得它成為不同文本處理任務文本特征權重表示的首選方案. 如果要評選一個 NLP 領域最難以被忘記的公式, 我想, TF-IDF應該是無可爭議的第一和唯一. 雖然在以上領域,目前出現了不少以深度學習為基礎的新的文本表達和權重(Weighting)表示方法,但是 TF-IDF 作為一個古董方法,依然在很多應用中發揮着不可替代的作用.
TF-IDF 一般是文本處理領域初學者入門階段就會了解到的概念, 了解和掌握 TF-IDF 算法, 能夠幫助初學者更快地理解其它更加深入復雜的文本挖掘算法和模型.
以下我會從 TF-IDF 的應用背景, TF-IDF 的發現歷史, 算法公式及其變種, TF-IDF 的應用幾個方面來介紹和展開討論.
向量空間(VSM)模型
一個自然語言的文本一般表現為由文字, 數字和標點符號和少數特殊符號組成的字符串. 文字或字符等最基本的文本元素自底向上, 組成詞, 進而形成短語, 句子, 段落和篇章. 要讓計算機能高效地處理自然文本, 就需要找到一種合理的形式化的文本表示方法, 這種表示方法一方面能盡可能完整真實地反應文檔的內容(主題, 領域或結構信息), 另一方面還需要對不同的文檔具有區分能力. 比較理想的形式化表示, 不難想到能否用"向量"來表示文檔, 並嘗試用現代數學工具(方法)來解決信息檢索或其他文本處理相關問題.
TF-IDF 正是源於一個最經典也是最古老的信息檢索模型, 即"向量空間模型" (Vector Space Model, VSM). VSM 是 20 世紀 60 年代末期由 G. Salton 等人提出的, 最早用在 SMART 信息檢索系統中, 目前已經成為自然語言處理中的常用模型.
定義 (向量空間模型(VSM)) 給定一個文檔 \(D(t_1, w_1; t_2, w_2;\cdots; t_n, w_n)\) (\(t_k, w_k)\)分別為一個特征項及其對應的權重), \(D\)符合以下兩條約定:
(1). 各個特征項\(t_k(1\leq k \leq n)\)互異;
(2). 各個特征項\(t_k\)無先后順序關系 (即不考慮文檔內部結構).
在以上兩個約定下, 可以把特征項\(t_1, t_2, \cdots, t_n\)看成一個\(n\)維坐標系, 而權重\(w_1, w_2, \cdots, w_n\)為相應的坐標值, 因此, 一個文本就表示為一個\(n\)維空間中的一個向量. 我們稱\(D=D(w_1, w_2, \cdots, w_n)\)為文本\(D\)的向量表示或向量空間模型.
采用向量空間模型進行文本表示時, 需要經由以下兩個主要步驟:
(1). 為特定任務生成文本表示所需要的特征項序列 \(D=(t_1, t_2, \cdots, t_d)\);
(2). 一舉文本特征項序列, 對各個文檔進行權重計算, 賦值, 規范化等處理, 將其轉化為機器學習算法所需要的特征向量.
有了向量的表達, 文檔相關度往往可以用向量在某種意義上的“相似度”來進行近似, 比如余弦相似性 (Cosine Similarity) 或者是點積 (Dot Product). 這樣, 相關度就可以用一個值來進行表達. 不管是余弦相似度還是點積都能夠從線性代數或者幾何的角度來解釋計算的合理性.
TF-IDF的發現
文本向量化的嘗試從 20 世紀 70 年代就已經開始, 1971 年, 美國康奈爾大學教授 Gerard Salton 發表了 "The SMART Retrieval System—Experiments in Automatic Document Processing" 一文, 文中首次提到了把查詢關鍵字和文檔都轉換成"向量", 並且給這些向量中的元素賦予不同的值. 這篇論文中描述的 SMART 檢索系統, 特別是其中對 TF-IDF 及其變種的描述成了后續很多工業級系統的重要參考.
1972 年, 英國的計算機科學家 Karen Spärck Jones 在 "A Statistical Interpretation of Term Specificity and Its Application in Retrieval" 一文中第一次詳細地闡述了 IDF 的應用. 其后 Jones 又在 "Index Term Weighting" 一文中對 TF 和 IDF 的結合進行了論述. 可以說, Jones 是第一位從理論上對 TF-IDF 進行完整論證的科學家, 因此后世也有很多人把 TF-IDF 的發明歸結於 Jones.
TF-IDF算法公式
回顧上面的向量空間模型, 可知關於文檔的向量表示, 其實就是對預先定義(設計)好的特征項, 賦予其 "適當" 的權重. 特征權重用於衡量某個特征項在文檔表示中的重要程度或區分能力的強弱. 權重計算的一般方法是利用文本的統計信息, 主要是詞頻, 給特征項賦予一定的權重.
最朴素的想法, 把文檔向量設為 V 維度。這里的 V 是整個詞匯表 (Vocabulary) 的總長度. 對於這個向量中的每一個維度, 都表示英文中的一個單詞, 沒有重復. 可以看到, 在這樣的情況下, 如果當前的詞出現在這個向量所對應的文檔或者關鍵字里, 就用 \(1\) 來表達; 如果這個詞沒出現, 就用 \(0\) 來表達. 這就是給每個維度賦值 (Weighting) 的最簡單的方法. 形式化的表示如下:
這里\(w_{i,j}\)表示特征項\(t_i\)在文本\(D_j\)中的權重. 這種表示方法被稱為布爾權重(Boolean weighting), 布爾權重把文本中的每個特征等同對待, 無法體現特征項在文本中的作用程度, 因而在實際中\(0, 1\)值逐漸被更精確的特征項的頻率所代替.
更進一步不難想到, 如果一個特征詞在文本中出現的頻數高, 它的重要性也應該相應拔高, 此使特征權重可以用
表示, 這里 \(tf_{i,j}\)表示特征項\(t_i\)在文本\(D_j\)中的頻數. 這種絕對詞頻 (term frequency, TF) 方法中, 無法體現低頻特征的區分能力, 因為有些特征詞出現次數很多, 但並不能很好地代表文本特征(比如很多generic的常用詞), 而有些特征項雖然頻率較低, 但表征能力卻很強.
倒排文檔頻度 (inverse document frequency, IDF)方法是 1972 年 Karen Spärck Jones 提出的計算詞與文本相關權重的經典計算方法, 其在信息檢索具有重要重要地位.
\(n_i\) 是全部文檔集中出現特征項 \(t_i\) 的文檔數. 該方法指出稀有特征比常用特征有更重要的信息. 在實際使用中, 常用公式\(L + \log((N-n_i)/n_i)\)替代, 其中, 常數 \(L\) 為經驗值, 一般取 \(1\). IDF方法的權重隨着包含某個特征的文檔數量 \(n_i\) 呈反向變化, 在極端情形下, 只在一篇文檔中出現的特征含有最高的 IDF 值.
本文下面要介紹的 TF-IDF 就是在向量空間模型的假設下的一種更加復雜的, 將絕對詞頻 (TF) 和逆文檔頻率(IDF)二者結合起來的權重計算方法:
這個式子表面特征權重與特征項在文檔里出現的頻率成正比, 與在整個語料中含有該特征項的文檔數成反比.這個綜合考慮了高頻詞與稀有詞的公式, 現在看來只是一個略顯朴素經驗公式, 但它至今仍然在眾多文檔特征權重計算方法中暫居着難以被取替的地位.
TF-IDF的變種和改進
經典的 TF-IDF 算法想法簡明而自然, 在過去的很長一段時間里, 研究人員和工程師開發出了很多種 TF-IDF 的變種. 以下是幾種常見的變形形式:
- 文本長度歸一化.
或者
文檔向量進行標准化,使得這些向量能夠不受向量里有效元素多少的影響,也就是不同的文檔可能有不同的長度, 當向量都標准化為一個單位向量的長度時, 進行點積運算就相當於在原來的向量上進行余弦相似度的運算. 所以, 另外一個角度利用這個規則就是直接在多數時候進行余弦相似度運算, 以代替點積運算.
- 文檔頻率的對數代替原始TF
或者
對 TF 進行變換, 是為了一個不讓 TF 線性增長. 舉例而言, 人們常常用以上兩種變化形式來代替原來的 TF 取值. 在這樣新的計算下, 假如 "soccer" 一詞出現一次,新的值是 \(1\), 出現 \(100\) 次, 新的值是 \(5.6\), 而出現 \(200\) 次, 新的值是 \(6.3\). 很明顯, 這樣的計算保持了一個平衡, 既有區分度, 但也不至於完全線性增長.
- 特征頻率的倒數的對數值代替IDF
這里, \(M\) 為特征項的個數, \(nt_i\) 為特征項 \(t_i\) 為特征項在預料中出現的次數. TF-IDF 的這種變形被稱為 TF-IWF (inverse word frequency), 由 R. Basili et al.(1999) 提出來, 除了用特征頻率倒數 IWF 替代 IDF, 算法還采用了 IWF 的平方, 而不是 IDF 的一次方. Basili等認為 IDF 的一次方給了特征頻率太多的倚重, 所以用 IWF 的平方來平衡權重值對於特征頻率的倚重.
除了上面介紹的這些常用的方法以外, 還有很多其他的權重計算方法, 例如: Dagan et al. (1997) 提出的基於錯誤驅動的 (mistake-driven) 特征權重計算方法, 這種方法不是通過一個公式直接計算得到, 而是通過下游任務的目標, 為每個特征指定一個初始權重, 然后根據訓練預料不斷調整特征權重向量的取值, 直到權重向量大致不再改變. 還有 Okapi 權重函數企圖進一步降低特征項 \(t_i\) 在文本 \(D_j\) 中出現的次數影響. Xue and Sun (2003) 將上面的某些方法進行疊加, 提出了 TF-IDF-IG 和 TF-EXP-IG 權重算法. Chen and Zong (2003) 則考慮特征詞的頻率分布不均衡性, 引入不均衡變量 (DBV) 並且用 \(\sqrt[m]{tf_{i,j}} (m=1, 2, \cdots)\) 替代 \(tf_{i,j}\), 提出了 TF-IDF-DBV 權重算法, 等等. 還有很多特征權重算法, 在此難以一一列舉.
最后需要指出的是, 這些不同的權重計算方法, 實質上都是考慮特征項在整個特征集中的分布問題, 這些經驗公式從不同的角度定義公式, 往往缺少理論上的推導和驗證, 因而表現出來的非一般性結果無法得到合理的解釋.
TF-IDF的應用
TF-IDF 作為向量空間模型中的基礎文本特征表示方法, 一旦文本被表示為 TF-IDF 值的向量, 便可或直接或融合其他特征表示方法, 用於各種下游任務, 如文本語義相似性匹配, 文本聚類, 文本分類, 信息檢索中query-doc文本相關性計算等等. 此外, TF-IDF 也可以作為一種無監督方法對文本進行關鍵詞提取.
小結
本文主要介紹了信息檢索和自然語言處理領域的一個關鍵技術, 文本特征表示經典算法: TF-IDF, 包括它提出的背景框架(向量空間模型), 公式發現的歷程, 以及各種改進和變種版本, 最后是其應用場景.
參考文獻
[1]. 宗成慶. 統計自然語言處理 (第二版). 北京: 清華大學出版社, 2013.
[2]. 陳開江. 推薦系統. 北京: 電子工業出版社, 2019.