美文网首页
Spark-特征抽取(TF-IDF)

Spark-特征抽取(TF-IDF)

作者: snow_14b5 | 来源:发表于2018-08-16 13:50 被阅读0次

mac单机简单实现一个Spark-特征抽取(TF-IDF)。

TF-IDF原理:

词频TF(t,d)是某个词t在文档d中出现的次数。
文档频率DF(t,D)是包含词t的文档d的数目。

如果我们仅使用词频来衡量重要性,则很容易过分强调那些出现非常频繁但携带很少与文档相关信息量的词。比如:的,地,得一类的。

如果一个词在在语料库中出现非常频繁,意味着它更不能携带特定文档的特定信息。逆文档频率就是一个用于度量一个词能提供多少信息量的数值:

具体定义:

IDF(t,D)=log |D|/(DF(t,D)+1)

TFIDF(t,d,D)=TF(t,d)×IDF(t,D)

在SparkML库中,TF-IDF被分为两部分:TF和IDF 已经实现了,可以直接调用。

代码如下(选取了一个中文例子,英文试了也适用):

import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import org.apache.spark.ml.feature.{HashingTF, _}

object HFTest {

def main(args: Array[String]) {
val spark = SparkSession
.builder
.appName("HFTest")
.getOrCreate()

val sentenceDataFrame = spark.createDataFrame(Seq(
  (0, "一种 简单 的 文本 特征 提取 算法"),
  (1, "特征 提取 算法"),
  (2, "一种 简单")
)).toDF("id", "sentence")

val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
var wordData = tokenizer.transform(sentenceDataFrame)
wordData.select("sentence", "words").show(false)
//HashingTF是一个Transformer,文本处理中接收词条的集合然后把这些集合转换成固定长度的特征向量
//这个算法在哈希的同时会统计各个词条的词频

var hashingTF = new HashingTF()
  .setInputCol("words").setOutputCol("tf")
val tf= hashingTF.transform(wordData)
tf.cache()
tf.show(false)

val idf=new IDF().setInputCol("tf").setOutputCol("features").fit(tf)
val tfidf =idf.transform(tf)

println("tfidf: ")
tfidf.show(false)


spark.stop()

}

}
输出:

代码中没有设定HashingTF的大小,系统默认给了262144,如果是集群上设为100万+也是可以的。

+---+-------------------+---------------------------+---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

|id |sentence |words |tf |features |

+---+-------------------+---------------------------+---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

|0 |一种 简单 的 文本 特征 提取 算法|[一种, 简单, 的, 文本, 特征, 提取, 算法]|(262144,[40925,60063,110521,111586,112201,238030,260200],[1.0,1.0,1.0,1.0,1.0,1.0,1.0])|(262144,[40925,60063,110521,111586,112201,238030,260200],[0.28768207245178085,0.28768207245178085,0.6931471805599453,0.28768207245178085,0.28768207245178085,0.6931471805599453,0.28768207245178085])|

|1 |特征 提取 算法 |[特征, 提取, 算法] |(262144,[60063,111586,260200],[1.0,1.0,1.0]) |(262144,[60063,111586,260200],[0.28768207245178085,0.28768207245178085,0.28768207245178085]) |

|2 |一种 简单 |[一种, 简单] |(262144,[40925,112201],[1.0,1.0]) |(262144,[40925,112201],[0.28768207245178085,0.28768207245178085]) |

+---+-------------------+---------------------------+---------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

相关文章

  • Spark-特征抽取(TF-IDF)

    mac单机简单实现一个Spark-特征抽取(TF-IDF)。 TF-IDF原理: 词频TF(t,d)是某个词t在文...

  • 【Spark Mllib】TF-IDF&Word2Vec

    1 从数据中抽取合适的特征 1.1 TF-IDF短语加权表示 TF-IDF公式的含义是:在一个文档中出现次数很多的...

  • 02-TF-IDF分析问题

    第二种特征抽取的方式:TF-IDF tf:term frequency:词的频率idf:inverse docum...

  • 文件特征抽取 — TF-IDF算法

    文件特征抽取 作用:对文本数据进行特征值化 类:sklearn.feature_extraction.text.C...

  • 关键词抽取模型

    TF-IDF算法实现关键词抽取 TF-IDF(term frequency-inverse document fr...

  • Task3

    特征选择 TF-IDF原理以及利用其进行特征筛选 互信息的原理以及利用其进行特征筛选 TF-IDF 原理: 如何提...

  • TaskThree-20190307

    特征选择 1、TF-IDF原理TF-IDF(Term Frequency-Inverse Document Fre...

  • sklearn学习 — 特征抽取

    特征抽取 sklearn库提供了特征抽取模块 sklearn.feature_extraction 对数据进行特征...

  • 15.Spark学习(Python版本):特征处理相关的算法(T

    特征处理相关的算法,大体分为以下三类: 特征抽取:从原始数据中抽取特征特征转换:特征的维度、特征的转化、特征的修改...

  • 特征工程——特征抽取

      数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。因此,特征工程在机器学习过程中占据极其重要的一部...

网友评论

      本文标题:Spark-特征抽取(TF-IDF)

      本文链接:https://www.haomeiwen.com/subject/ccanbftx.html