NLP基本方法:TF-IDF原理及應用
一、TF-IDF原理
1. 什麼是TF-IDF
TF-IDF(Term Frequency-Inverse Document Frequency, 詞頻-逆檔案頻率).
是一種用於資訊檢索與資訊探勘的常用加權技術。TF-IDF是一種統計方法,用以評估一字詞對於一個檔案集或一個語料庫中的其中一份檔案的重要程度。字詞的重要性隨著它在檔案中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。
上述引用總結就是, 一個詞語在一篇文章中出現次數越多, 同時在所有文件中出現次數越少, 越能夠代表該文章.
這也就是TF-IDF的含義.
詞頻 (term frequency, TF) 指的是某一個給定的詞語在該檔案中出現的次數。這個數字通常會被歸一化(一般是詞頻除以文章總詞數), 以防止它偏向長的檔案。(同一個詞語在長檔案裡可能會比短檔案有更高的詞頻,而不管該詞語重要與否。)
但是, 需要注意, 一些通用的詞語對於主題並沒有太大的作用, 反倒是一些出現頻率較少的詞才能夠表達文章的主題, 所以單純使用是TF不合適的。權重的設計必須滿足:一個詞預測主題的能力越強,權重越大,反之,權重越小。所有統計的文章中,一些詞只是在其中很少幾篇文章中出現,那麼這樣的詞對文章的主題的作用很大,這些詞的權重應該設計的較大。IDF就是在完成這樣的工作.
公式:
逆向檔案頻率 (inverse document frequency, IDF) IDF的主要思想是:如果包含詞條t的文件越少, IDF越大,則說明詞條具有很好的類別區分能力。某一特定詞語的IDF,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取對數得到。
公式:
某一特定檔案內的高詞語頻率,以及該詞語在整個檔案集合中的低檔案頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向於過濾掉常見的詞語,保留重要的詞語。
TF−IDF=TF∗IDF
二、使用TF-IDF計算文章相似度
1.餘弦相似度
餘弦值的範圍在[-1,1]之間,值越趨近於1,代表兩個向量的方向越接近;越趨近於-1,他們的方向越相反;接近於0,表示兩個向量近乎於正交。
一般情況下,相似度都是歸一化到[0,1]區間內,因此餘弦相似度表示為cosineSIM=0.5cosθ+0.5
2.計算過程
(1)使用TF-IDF演算法,找出兩篇文章的關鍵詞;
(2)每篇文章各取出若干個關鍵詞(為公平起見,一般取的詞數相同),合併成一個集合,計算每篇文章對於這個集合中的詞的詞頻
(注1:為了避免文章長度的差異,可以使用相對詞頻;注2:這一步選出的不同詞的數量決定了詞頻向量的長度);
(3)生成兩篇文章各自的詞頻向量(注:所有文章對應的詞頻向量等長,相同位置的元素對應同一詞);
(4)計算兩個向量的餘弦相似度,值越大就表示越相似。
Note that: tf-idf值只在第一步用到。
舉例說明:
文章A:我喜歡看小說。
文章B:我不喜歡看電視,也不喜歡看電影。
第一步: 分詞
文章A:我/喜歡/看/小說。
文章B:我/不/喜歡/看/電視,也/不/喜歡/看/電影。
第二步,列出所有的詞。
我,喜歡,看,小說,電視,電影,不,也。
第三步,計算每個文件中各個詞的詞頻tf。
文章A:我 1,喜歡 1,看 1,小說 1,電視 0,電影 0,不 0,也 0。
文章B:我 1,喜歡 2,看 2,小說 0,電視 1,電影 1,不 2,也 1。
第四步,計算各個詞的逆文件頻率idf。
我 log(2/2)=0,喜歡 log(2/2)=0,看 log(2/2)=0,小說 log(2/1)=1,電視 log(2/1)=1,電影 log(2/1)=1,不 log(2/1)=1,也 log(2/1)=1。
第五步:計算每個文件中各個詞的tf-idf值
文章A:我 0,喜歡 0,看 0,小說 1,電視 0,電影 0,不 0,也 0。
文章B:我 0,喜歡 0,看 0,小說 0,電視 1,電影 1,不 1,也 1。
第六步:選擇每篇文章的關鍵詞(這裡選tf-idf排名前3的詞作為關鍵詞(至於並列大小的隨機選))
文章A:我 0,喜歡 0,小說 1
文章B:電視 1,電影 1,不 1
第七步:構建用於計算相似度的詞頻向量(根據上一步選出的詞:我,喜歡,小說,電視,電影,不)
文章A:[1 1 1 0 0 0]
文章B: [1 2 0 1 1 2]
第八步:計算餘弦相似度值
cosθ=3/sqrt(33)= 0.5222329678670935
cosineSIM(A,B)=0.5222329678670935*0.5+0.5=0.7611164839335467
原文參考:
https://www.cnblogs.com/wxiaoli/p/6940702.html
https://blog.csdn.net/zrc199021/article/details/53728499
相關文章
- TF-IDF的原理與應用
- HDFS應用場景、原理、基本架構及使用方法概述架構
- zookeeper原理及應用
- xgboost原理及應用
- [轉]SSH原理及應用
- Webpack 下使用 web workers 及 基本原理 和 應用場景Web
- 百度NLP:強化學習之原理與應用強化學習
- 閉包的原理及應用
- Android Protobuf應用及原理Android
- ZooKeeper核心原理及應用場景
- zigzag走線原理及應用
- Logistic 迴歸-原理及應用
- Rsync原理介紹及配置應用
- Quartz叢集原理及配置應用quartz
- 音影片技術原理及應用
- Flink基本原理與應用場景
- 【NLP學習筆記】(一)Gensim基本使用方法筆記
- flannel vxlan工作基本原理及常見排障方法
- HMM在NLP中的應用HMM
- cortex-a8原理實踐及應用
- DBMySQL主從同步原理及應用gccMySql主從同步GC
- Keepalived原理及配置應用總結
- 阿里NLP總監分享-NLP技術的應用與思考阿里
- .NET應用程式除錯—原理、工具、方法除錯
- .NET應用程式除錯:原理、工具、方法除錯
- 【趣味設計模式系列】之【代理模式1--基本原理、實戰及框架應用】設計模式框架
- 01 . ELK Stack簡介原理及部署應用
- Android中mmap原理及應用簡析Android
- 布隆過濾器的原理及應用過濾器
- CGroup 介紹、應用例項及原理描述
- Base64 的原理、實現及應用
- 深入探究 Golang 反射:功能與原理及應用Golang反射
- 中科三方:DNS劫持原理及應對方法DNS
- RabbitMQ的應用場景以及基本原理介紹MQ
- RabbitMQ 的應用場景以及基本原理介紹MQ
- 資料庫原理與應用----實驗1:Oracle基本操作資料庫Oracle
- 開發Qt應用程式的基本方法總結QT
- Cookie基本應用Cookie