文档章节

spark mllib TF-IDF 文本特征提取算法

ericSM
 ericSM
发布于 2016/07/30 08:43
字数 351
阅读 1283
收藏 0

运行代码如下

package spark.FeatureExtractionAndTransformation

import org.apache.spark.mllib.feature.{HashingTF, IDF}
import org.apache.spark.{SparkContext, SparkConf}

/**
  * TF-IDF  是一种简单的文本特征提取算法
  *  词频(Term Frequency): 某个关键词在文本中出现的次数
  *  逆文档频率(Inverse Document Frequency): 大小与一个词的常见程度成反比
  *  TF = 某个词在文章中出现的次数/文章的总词数
  *  IDF = log(查找的文章总数 / (包含该词的文章数 + 1))
  *  TF-IDF = TF(词频) x IDF(逆文档频率)
  *  此处未考虑去除停用词(辅助词,如副词,介词等)和
  *  语义重构("数据挖掘","数据结构",拆分成"数据","挖掘","数据","结构")
  *  这样两个完全不同的文本具有 50% 的相似性,是非常严重的错误.
  * Created by eric on 16-7-24.
  */
object TF_IDF {
  val conf = new SparkConf()               //创建环境变量
    .setMaster("local")                                             //设置本地化处理
    .setAppName("TF_IDF")                              //设定名称
  val sc = new SparkContext(conf)

  def main(args: Array[String]) {
    val documents = sc.textFile("/home/eric/IdeaProjects/wordCount/src/main/spark/FeatureExtractionAndTransformation/a.txt")
      .map(_.split(" ").toSeq)

    val hashingTF = new HashingTF()			//首先创建TF计算实例
    val tf = hashingTF.transform(documents).cache()//计算文档TF值
    val idf = new IDF().fit(tf)						//创建IDF实例并计算

    val tf_idf = idf.transform(tf) //计算TF_IDF词频
    tf_idf.foreach(println)

//    (1048576,[179334,596178],[1.0986122886681098,0.6931471805599453])
//    (1048576,[586461],[0.1823215567939546])
//    (1048576,[422129,586461],[0.6931471805599453,0.1823215567939546])
//    (1048576,[586461,596178],[0.1823215567939546,0.6931471805599453])
//    (1048576,[422129,586461],[0.6931471805599453,0.1823215567939546])
  }
}

a.txt

hello mllib
spark
goodBye spark
hello spark
goodBye spark

结果如下

 

© 著作权归作者所有

ericSM
粉丝 17
博文 142
码字总数 154379
作品 0
南京
项目经理
私信 提问
地铁译:Spark for python developers ---Spark与数据的机器学习

机器学习可以从数据中得到有用的见解. 目标是纵观Spark MLlib,采用合适的算法从数据集中生成见解。对于 Twitter的数据集, 采用非监督集群算法来区分与Apache
Spark相关的tweets . 初始输入...

abel_cao
01/17
0
0
Spark Mlib TFIDF源码详读 笔记

在提取文本特征时,经常用到TF-IDF算法。Spark Mlib实现了该算法。下面是Spark Mlib中,TF_IDF算法调用的一个实例: 要求输入数据 必须是一行一篇文章(切过词的),Spark Mlib中没有提供切词...

小萝卜_
2016/05/05
1K
2
Spark MLlib知识点学习整理

MLlib的设计原理:把数据以RDD的形式表示,然后在分布式数据集上调用各种算法。MLlib就是RDD上一系列可供调用的函数的集合。 操作步骤: 1、用字符串RDD来表示信息。 2、运行MLlib中的一个特征...

雪童子
2015/12/06
0
0
基于Spark的机器学习实践 (二) - 初识MLlib

1 MLlib概述 1.1 MLlib 介绍 ◆ 是基于Spark core的机器学习库,具有Spark的优点 ◆ 底层计算经过优化,比常规编码效率往往要高 ◆ 实现了多种机器学习算法,可以进行模型训练及预测 1.2 Spark ...

javaedge
04/09
0
0
Spark应用HanLP对中文语料进行文本挖掘--聚类详解教程

软件:IDEA2014、Maven、HanLP、JDK; 用到的知识:HanLP、Spark TF-IDF、Spark kmeans、Spark mapPartition; 用到的数据集:http://www.threedweb.cn/thread-1288-1-1.html(不需要下载,已...

左手的倒影
2018/11/12
42
0

没有更多内容

加载失败,请刷新页面

加载更多

用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
2
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
10
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0
Django的ChoiceField和MultipleChoiceField错误提示,选择一个有效的选项

在表单验证时提示错误:选择一个有效的选项 例如有这样一个表单: class ProductForm(Form): category = fields.MultipleChoiceField( widget=widgets.SelectMultiple(), ...

编程老陆
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部