文本特征提取_03:基于词频数的文档向量CountVectorizer
来源:互联网 发布:多线程编程java面试题 编辑:程序博客网 时间:2024/05/22 14:30
王小草SparkML笔记
笔记整理时间:2017年1月10日
笔记整理者:王小草
1. 基于词频数的文档向量
在文本特征提取_01和02中分别介绍了TF-IDF文档矩阵和基于神经网络的word2vec词嵌入矩阵。本文我们要介绍的是一个非常基础非常简单的文档向量表征。
做过LDA的小伙伴知道对于文档的特征,它只需要每个词在该文档中出现的频数即可。因此简单而言,根据频数(token counts)可以将一个文档转换成一个向量。
假设有两篇文档,分词后以词的数组形式表示,如下:
通过计算词频,文档可以表示成如下表格中的第三列:
将两篇文档中的词去重后就组成了一个字典,这个字典中有3个词:a,b,c,分别建立索引为0,1,2.
在第三列的文档向量,是由基于字典的索引向量,与对应对索引的词频向量所组成的。
文档向量是稀疏的表征,例子中只有3个词可能感觉不出,在实际业务中,字典的长度是上万,而文章中出现的词可能是几百或几千,故很多索引对应的位置词频都是0.
2. Spark代码
来看看官网上的案例。
object FeatureExtraction { def main(args: Array[String]) { Logger.getLogger("org.apache.spark").setLevel(Level.WARN) val conf = new SparkConf().setAppName("FeatureExtraction").setMaster("local") val sc = new SparkContext(conf) val spark = SparkSession .builder() .appName("Feature Extraction") .config("spark.some.config.option", "some-value") .getOrCreate() // 人为得创建一个df val df = spark.createDataFrame(Seq( (0, Array("a", "b", "c")), (1, Array("a", "b", "b", "c", "a")) )).toDF("id", "words") //训练CountVectorizerModel val cvModel: CountVectorizerModel = new CountVectorizer() .setInputCol("words") .setOutputCol("features") .setVocabSize(3) .setMinDF(2) .fit(df) //也可以基于已有的字典训练模型 val cvm = new CountVectorizerModel(Array("a", "b", "c")) .setInputCol("words") .setOutputCol("features") //预测 cvModel.transform(df).show(false) spark.stop() }}
打印的结果:
+---+---------------+-------------------------+|id |words |features |+---+---------------+-------------------------+|0 |[a, b, c] |(3,[0,1,2],[1.0,1.0,1.0])||1 |[a, b, b, c, a]|(3,[0,1,2],[2.0,2.0,1.0])|+---+---------------+-------------------------+
0 0
- 文本特征提取_03:基于词频数的文档向量CountVectorizer
- 文本词频Countvectorizer
- 文本预处理,去除词频数为1的文档
- Spark CountVectorizer处理文本特征
- SparkML中三种文本特征提取算法(TF-IDF/Word2Vec/CountVectorizer)
- 基于sklearn的文本特征提取与分类
- 基于sklearn的文本特征提取与分类
- 基于sklearn的文本特征提取与分类
- 三种文本特征提取(TF-IDF/Word2Vec/CountVectorizer)及Spark MLlib调用实例(Scala/Java/python)
- scala--三种文本特征提取(TF-IDF/Word2Vec/CountVectorizer)及Spark MLlib调用实例(Scala/Java/python)
- 文本挖掘----基于OCR的文档关键字提取
- 基于PCA的特征提取
- 基于PCA的特征提取
- 基于纹理的特征提取
- 文本特征提取_01:词项文档矩阵
- 文本特征提取_01:词项文档矩阵
- 文本挖掘过程的特征提取
- 文本特征提取方法的研究
- C++面向对象程序设计思想(精)
- [HEVC学习笔记]视频压缩的基本认识
- Android再按一次退出程序
- Kylin 1.6.0进行Streaming Cube构建时的问题总结
- Entity Framework的启动速度优化
- 文本特征提取_03:基于词频数的文档向量CountVectorizer
- centos 7 卸载 mariadb 的正确命令
- FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具
- MVC(四、布局)
- spring boot集成mybatis无法扫描mapper文件(坑)
- checkpoint彻底解密
- 程序员需要具备的基本技能
- spring task
- CSS3 Boxshadow