TF-IDF(Term Frequency - Inverse Document Frequency)是一種在信息檢索與文本挖掘中非常常用的關鍵詞提取方法,用于衡量一個詞在文檔集合中的重要性。它的核心思想是:
如果一個詞在某個文檔中出現得頻繁,同時在其他文檔中很少出現,那么這個詞對該文檔具有較強的區分性,應當被賦予較高的權重。
一、TF-IDF 的基本組成
1. TF(Term Frequency)——詞頻
表示詞語在當前文檔中出現的頻率。常見定義如下:
用于衡量詞對當前文檔的重要性。
2. IDF(Inverse Document Frequency)——逆文檔頻率
表示某個詞在整個語料庫中出現的“稀有程度”:
其中:
NNN:語料庫中的文檔總數
∣{d∈D:t∈d}:包含詞 t 的文檔數量
加 1 是為了避免除以 0
IDF 越大,說明詞越“稀有”,對區分性越重要。
3. TF-IDF 計算公式
即:某詞在某文檔中的詞頻 × 該詞在整個語料庫中的逆文檔頻率。
二、TF-IDF 的直觀理解
一個詞在文檔中頻繁出現 → TF 高 → 可能重要
但如果這個詞在所有文檔中都頻繁出現(比如 “的”“是”“and”) → IDF 低 → 權重應該降低
所以 TF-IDF 是一種平衡詞頻與泛用性的機制
三、使用場景
關鍵詞提取:找出一篇文章中最重要的詞語
文本分類:將文檔向量化后用于機器學習模型
信息檢索:計算查詢和文檔之間的相關性(如搜索引擎)
四、TF-IDF 的特點
優點:
簡單高效,無需訓練模型
能過濾掉高頻但無意義的詞(如停用詞)
常用于傳統機器學習方法(SVM、樸素貝葉斯等)中的文本特征表示
缺點:
無法捕捉語義(“漂亮”和“美麗”是不同的詞)
對詞的順序不敏感(bag-of-words 特性)
對長文檔可能存在偏差(詞頻偏大)
五、TF-IDF 在 Python 中的使用示例(基于 scikit-learn)
from sklearn.feature_extraction.text import TfidfVectorizercorpus = ["我喜歡自然語言處理","語言模型是人工智能的核心","我正在學習文本挖掘"
]vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(corpus)# 輸出詞匯表
print(vectorizer.get_feature_names_out())# 查看第一個句子的TF-IDF向量
print(tfidf_matrix[0].toarray())