什么是TF-IDF
TF-IDF(Term Frequency-Inverse Document Frequency),汉译为词频-逆文本频率指数。
TF指一个词出现的频率,假设在一篇文章中某个词出现的次数是n,文章的总词数是N,那么TF=n/N
逆文本频率指数IDF一般用于表示一个词的权重,其求解办法为IDFi=log(D/Dw),这里D指的是文本总量,Dw指的是词i在Dw篇文本中出现过。
这篇文章讲解的很详细《TF-IDF原理及使用》
什么是余弦相似
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。
假设向量a、b的坐标分别为(x1,y1)、(x2,y2) 。则:
TF-IDF和余弦相似应用
这里有两篇文章讲解的非常清楚,我就不再多说了,直接上文章链接。
下面就具体讲解下代码的实现。
添加Gradle依赖
用到了WebMagic爬虫框架、Jieba分词java版,Lucene、Apache等一些库
compile group: 'us.codecraft', name: 'webmagic-core', version: '0.7.3'
// https://mvnrepository.com/artifact/us.codecraft/webmagic-extension
compile group: 'us.codecraft', name: 'webmagic-extension', version: '0.7.3'
// https://mvnrepository.com/artifact/com.huaban/jieba-analysis
compile group: 'com.huaban', name: 'jieba-analysis', version: '1.0.2'
compile group: 'commons-io', name: 'commons-io', version: '2.6'
compile group: 'org.apache.lucene', name: 'lucene-core', version: '3.6.0'
compile group: 'org.apache.lucene', name: 'lucene-queryparser', version: '3.6.0'