TF-IDF的原理與應用
作者:一個獨行的程式設計師
1.TF-IDF原理
TF-IDF(Term Frequency-Inverse Document Frequency),中文叫做詞頻-逆文件頻率。在文字挖掘(Text Mining)和資訊檢索(Information Retrieval)領域具有廣泛的應用。
其難能可貴之處在於:沒有繁複的數學推導式,僅需要中學數學水平,便可以在一節課時間理解其原理並上手使用。
設想現在我們正在閱讀新聞,如何最快速的瞭解新聞主旨?毫無疑問——關鍵詞
TF-IDF就具有這樣的能力:提取關鍵詞!
假設一個詞在一篇文章中出現的次數越多,那麼它就越”緊扣主題”。以本文為例,我們可以統計詞頻(TF),不難發現TF-IDF,原理,應用是出現頻率很高的詞,後文稱keywords。這符合我們的假設,但是有些詞卻出現的次數更多,如:的,是,有等。這類詞語沒有明確意義,我們稱為停頓詞(Stopwords)。
如果單純按照詞頻算關鍵詞,你會發現幾乎所有的文章都是stopwords的詞頻最高。換句話說,像這種”萬金油”,是沒有區分度的詞語,不能很好的起到將文章分類的作用。這時就需要祭出逆文件頻率(IDF)來解決詞語權重的問題。
雖然keywords詞頻不如stopwords高,但是縱觀全網的所有文章中,本文的keywords並不是在每篇文章都出現的,而是在很小一部分文章中出現。所以這些keywords是具有高辨識度的,應該給一個更大的權重;相反那些幾乎所有文章中都出現的stopwords,則應該給一個很小的權重。
最終,將TF*IDF得出的分值作為每一個詞在本文的重要度,就提取出了文章的關鍵詞。
公式化的說法如下,
對於在某一特定檔案裡的詞語 ti 來說,它的重要性可表示為:
以上式子中ni,j是該詞在檔案dj中的出現次數,而分母則是在檔案dj中所有字詞的出現次數之和。
|D|:語料庫中的檔案總數
|{ j: ti in dj}| :包含詞語 ti的檔案數目(即 ni,j != 0的檔案數目)如果該詞語不在語料庫中,就會導致分母為零,因此一般情況下使用1 + |{j : ti in dj}|
TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。
2.TF-IDF應用
本小節通過Google搜尋結果數為例,將含有中文”的”結果數15.8億作為整個語料庫大小,計算上一節中的keyword和stopword的TF-IDF值。為了計算簡便,假設全文分詞後一共500詞,則結果如下:
包含該詞的文章(百萬) | IDF | TF | TF-IDF | |
---|---|---|---|---|
TF-IDF | 0.497 | 3.502 | 0.018 | 0.063 |
原理 | 24.4 | 1.811 | 0.008 | 0.014 |
應用 | 82.8 | 1.280 | 0.008 | 0.010 |
是 | 363 | 0.638 | 0.028 | 0.018 |
有 | 482 | 0.515 | 0.026 | 0.013 |
的 | 1580 | 0.000 | 0.080 | 0.000 |
TF-IDF的優點是計算簡單,利於理解,價效比極高。但是它也有缺陷,首先單純依據文章中的TF來衡量重要性,忽略了位置資訊。如段首,句首一般權重更高;其次,有的文章可能關鍵詞只出現1-2次,但可能通篇都是圍繞其進行闡述和解釋,所以單純靠TF仍然不能解決所有的情況。
相關文章
- NLP基本方法:TF-IDF原理及應用
- SSH 的原理與應用
- 棧的原理與應用
- dubbo的SPI應用與原理
- SqlServer索引的原理與應用SQLServer索引
- TF-IDF與餘弦相似性的應用(二):找出相似文章
- TF-IDF與餘弦相似性的應用(三):自動摘要
- influxdb 原理與應用UX
- PDM與MRPⅡ應用原理
- TF-IDF與餘弦相似性的應用(一):自動提取關鍵詞
- 機器學習的技術原理、應用與挑戰機器學習
- API介面:原理、設計與應用API
- iOS–KVO的實現原理與具體應用iOS
- 強化學習之原理與應用強化學習
- 大資料技術原理與應用大資料
- 差分陣列原理與其字首和的應用陣列
- 簡單聊聊 GZIP 的壓縮原理與日常應用
- 資料結構 — 並查集的原理與應用資料結構並查集
- Ajax的原理和應用
- 密碼學承諾原理與應用 - 概覽密碼學
- URL編碼:原理、應用與安全性
- 深入探究 Golang 反射:功能與原理及應用Golang反射
- IT領域中哲學原理的應用——個體與整體
- Websphere Adapter 中錯誤處理的原理與應用WebAPT
- 閉包的原理及應用
- MongoDB 分片的原理、搭建、應用MongoDB
- Flink基本原理與應用場景
- 線段樹詳解 (原理,實現與應用)
- Spring AOP 實現原理與 CGLIB 應用SpringCGLib
- 多程序程式設計:原理、技術與應用程式設計
- 10-入侵檢測技術原理與應用
- 探索 Elasticsearch 8.X Terms Set 檢索的應用與原理Elasticsearch
- 包教包會-貝塞爾曲線的繪製原理與應用
- 奇異值分解(SVD)原理與在降維中的應用
- ucenter與其它應用結合時出現通訊失敗,ucenter應用原理與除錯除錯
- rabbitmq原理和應用MQ
- zookeeper原理及應用
- 如何理解Hadoop-Hbase原理與應用小結Hadoop