文本型数据的向量化:TF-IDF

1.对于文本型数据的分类处理(或者其他的处理),根据ik和jcseg等分词器先对它们进行分词处理之后,大家都知道,计算机是处理不了汉字的,对于文本型的词我们如何才能让计算机处理呢?我们可以通过TF-IDF将文本型的数据向量化。对于TF-IDF的概念我就不再阐述,网上的资源非常多,这里我主要来看看是如何实现的。

2.测试数据的准备(pca.txt)

1,纵坐标 是 该词 在该 文章 中 的 权重 0,其 出发点 是 一个词 对于 分类 的 重要性 不但 取决于 其在 整个语料 中 出现 的 概率 0,那么 它 对于 分类 的 重要性 也是 不同 的 1,我们 是 祖国 的 接班人

说明:,前面的是类别,后面的是伪造的一些分词的结构,通过空格分割,具体的一篇文章,可以通过分词器将其分割成这样的。

3.代码实现

LableWords.scala

package com.iflytek.classifier

import java.io.Serializable

case class LableWords(label:String,words:Array[String]) extends Serializable{ }

TestTfIdf.scala

package com.iflytek.tfidf

import org.apache.spark.sql.SparkSession import org.apache.spark.ml.linalg.Vectors import org.apache.spark.ml.feature.HashingTF import org.apache.spark.ml.feature.IDF import com.iflytek.classifier.LableWords import org.apache.log4j.Logger import org.apache.log4j.Level

object TestTfIdf {   def main(args: Array[String]): Unit = {     val sc=SparkSession.builder().master("local").appName("tfidf").getOrCreate()     Logger.getRootLogger.setLevel(Level.OFF)     import sc.implicits._     val dataFile=sc.sparkContext.textFile("E:\\test\\pca.txt", 10)     .map { line => val split=line.split(",")       LableWords(split(0),split(1).split(" ")) }.toDS     val tf=new HashingTF().setInputCol("words").setOutputCol("rawfeatures").setNumFeatures(10000)//10000表示设置的特征数     val tfdata=tf.transform(dataFile)     val idf=new IDF().setInputCol("rawfeatures").setOutputCol("features").fit(tfdata)     val idfdata=idf.transform(tfdata)      idfdata.select("label", "features").foreach { x => println(x.apply(0)+" "+x.apply(1)) }   } }

4.运行结果截图

说明:最左边的是类别(0,1)右边的10000是特征数,就是第一个[]里面的数据是每个词被转换成的数字,范围应该在特征数之间,后面的[]是这个词对应的tfidf的值。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏项勇

[Android笔记7]之通过DatePickerDialog,TimePickerDialog调用系统时间设置

2943
来自专栏一个会写诗的程序员的博客

java.base.jmod

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods$ jmod list java....

1182
来自专栏码匠的流水账

spring security reactive获取security context

本文主要研究下reactive模式下的spring security context的获取。

2142
来自专栏专知

2018年SCI期刊最新影响因子排行,最高244,人工智能TPAMI9.455

2018年6月26日,最新的SCI影响因子正式发布,涵盖1万2千篇期刊。CA-Cancer J Clin 依然拔得头筹,其影响因子今年再创新高,达244.585...

1482
来自专栏增长技术

App Guide相关

##TourGuide https://github.com/worker8/TourGuide

822
来自专栏Golang语言社区

Knapsack problem algorithms for my real-life carry-on knapsack

I'm a nomad and live out of one carry-on bag. This means that the total weight o...

1192
来自专栏跟着阿笨一起玩NET

c# 使用timer定时器操作,上次定时到了以后,下次还未执行完怎么处理

------解决方案-------------------------------------------------------- 开始的时候,禁用定时器,你...

3041
来自专栏码匠的流水账

聊聊HystrixThreadPool

hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java

921
来自专栏菩提树下的杨过

linq to sql取出随机记录/多表查询/将查询出的结果生成xml

在手写sql的年代,如果想从sqlserver数据库随机取几条数据,可以利用order by NewId()轻松实现,要实现多表查询也可以用select * f...

2236
来自专栏我和未来有约会

简练的视图模型 ViewModel

patterns & practices Developer Center 发布了 Unity Application Block 1.2 for Silver...

2349

扫码关注云+社区