文本型数据的向量化: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 条评论
登录 后参与评论

相关文章

来自专栏杨海力的专栏

Spark MLlib 算法系列之 FM

Spark之所以在机器学习方面具有得天独厚的优势,有以下几点原因:

1.1K1
来自专栏专知

【论文推荐】最新七篇行人再识别相关论文—深度排序、风格自适应、对抗、重排序、多层次相似性、深度空间特征重构、图对应迁移

【导读】既昨天推出六篇行人再识别文章,专知内容组今天又推出最近七篇行人再识别(Person Re-Identification)相关文章,为大家进行介绍,欢迎查...

5087
来自专栏海天一树

使用scikit-learn计算文本TF-IDF值

TF-IDF(Term Frequency-InversDocument Frequency)是一种常用于信息处理和数据挖掘的加权技术。该技术采用一种统计方法,...

753
来自专栏专知

【论文推荐】最新八篇知识图谱相关论文—神经信息检索、可解释推理网络、Zero-Shot、上下文、Attentive RNN

【导读】专知内容组今天为大家推出八篇知识图谱(Knowledge Graph)相关论文,欢迎查看!

1303
来自专栏C/C++基础

P问题、NP问题、NPC问题(NP完全问题)、NPH问题和多项式时间复杂度

多项式关系形如O(nk)O(n^k),k为某个常数,n是问题的输入规模。例如,时间复杂度为O(nlog(n))、O(n^3)都是多项式时间复杂度。时间复杂度为O...

421
来自专栏本立2道生

伪随机数生成算法

伪随机数生成算法在计算机科学领域应用广泛,比如枪击游戏里子弹命中扰动、数据科学里对样本进行随机采样、密码设计、仿真领域等等,背后都会用到伪随机数生成算法。

22412
来自专栏机器学习算法与Python学习

自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)

关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在对文本做数据分析时,一大半的...

4274
来自专栏专知

【论文推荐】最新6篇行人重识别相关论文—深度空间特征重构、生成对抗网络、图像生成、系列实战、图像-图像域自适应方法、行人检索

【导读】专知内容组整理了最近六篇行人重识别(Person Re-identification)相关文章,为大家进行介绍,欢迎查看! 1. Deep Spatia...

4916
来自专栏自然语言处理

结巴中文分词原理分析2

其中prob*.py的文件是作者事先训练好的模型参数(λ=(A,B,π)),如状态转移概率、发射概率等。真正的代码数也就:304+53+578+107+31+5...

851
来自专栏CreateAMind

系列论文简介

621

扫码关注云+社区