前言
文字處理中很多時候會需要給每個單詞分配權重,有了權重以便後續進一步處理。常用的演算法主要是TF-IDF。
TF
TF,即Term Frequency。我們可以將文件看成由若干詞(term)組成,那麼文件中某個term出現的頻率就是TF。詞頻和詞權重存在關係,可以用來作為詞權重的衡量因素之一。
IDF
IDF,即Inverse Document Frequency。TF演算法存在一個問題:比如某文件中多個term出現的次數相同,則不好判別他們之間哪個更重要。因此又引入逆文件頻率(IDF),某個term的IDF可定為:
IDF = log(frac{T}{t})
複製程式碼
其中,T為統計樣本中總文件數,t為包含某term的文件數。由此說明包含某term的文件數越多,該term越不重要。
獲取IDF方式
其實有幾種方式來統計IDF。
- 自己收集樣本庫進行統計。
- 第三方統計好的IDF表。
- 藉助百度或谷歌搜尋引擎,這種方式不準確。隨便取個m值假設為總文件,再搜尋某個term得到n條結果,則認為n除以m即為IDF。
TF-IDF
有了前面的TF和IDF就可以通過他們一起決定某個Term的權重。定義TF-IDF為TF乘以IDF。
實現程式碼
https://github.com/sea-boat/nlp_lab/tree/master/tf_idf
————-推薦閱讀————
——————廣告時間—————-
公眾號的選單已分為“分散式”、“機器學習”、“深度學習”、“NLP”、“Java深度”、“Java併發核心”、“JDK原始碼”、“Tomcat核心”等,可能有一款適合你的胃口。
鄙人的新書《Tomcat核心設計剖析》已經在京東銷售了,有需要的朋友可以購買。感謝各位朋友。
歡迎關注: