赞
踩
需要源码和数据集请点赞关注收藏后评论区留言私信~~~
TF-IDF是两个统计量的乘积,即词频(Term Frequency, TF)和逆向文档频率(Inverse Document Frequency, IDF)。它们各自有不同的计算方法。
TF是一个文档(去除停用词之后)中某个词出现的次数。它用来度量词对文档的重要程度,TF越大,该词在文档中就越重要。IDF逆向文档频率,是指文档集合中的总文档数除以含有该词的文档数,再取以10为底的对数。
TF-IDF的主要思想是如果某个词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为这个词或者短语具有很好的类别区分能力
具体实现步骤如下
(1)新建MAVEN项目,名称为spark-mlllib
(2)数据准备。新建一个文本文件,包含四行数据,内容如下:
- hello mllib hello spark
- goodBye spark
- hello spark
- goodBye spark
(3)新建Scala类,功能是计算单词的TF –IDF
创建TF计算实例
val hashingTF = new HashingTF()
//计算文档TF值
- val tf = hashingTF.transform(documents).cache()
- println("计算单词出现的次数结果为:")
- tf.foreach(println)
//创建IDF实例并计算
val idf = new IDF().fit(tf)
//计算TF_IDF词频
val tf_idfRDD: RDD[linalg.Vector] = idf.transform(tf)
统计结果如下
部分代码如下
- package com.etc
- import org.apache.spark.mllib.feature.{HashingTF, IDF}
- import org.apache.spark.mllib.linalg
- import org.apache.spark.rdd.RDD
- import org.apache.spark.{SparkConf, SparkContext}
-
- object TF_IDF {
- def main(args: Array[String]) {
- //创建环境变量
- val conf = new SparkConf()
- //设置本地化处理
- .setMaster("local")
- //设定名称
- .setAppName("TF_IDF") //设定名称
- val sc = new SparkContext(conf)
- //设置日志级别
- sc.setLogLevel("error")
- //读取数据并将句子分割成单词
- val documents = sc.textFile("a.txt")
- .map(_.split(" ").toSeq)
- println("分词的结果为:")
- documents.foreach(println)
- //创建TF计算实例
- val hashingTF = new HashingTF()
-
- //计算文档TF值
- val tf = hashingTF.transform(documents).cache()
- println("计算单词出现的次数结果为:")
- tf.foreach(println)
- //创建IDF实例并计算
- val idf = new IDF().fit(tf)
- //计算TF_IDF词频
- val tf_idfRDD: RDD[linalg.Vector] = idf.transform(tf) //计算TF_IDF词频
- println("计算TF_IDF值:")
- tf_idfRDD.foreach(println)
-
-
- }
- }
创作不易 觉得有帮助请点赞关注收藏~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。