Spark机器学习之 Word2Vec
Word2Vec简介
Word2Vec是一个词嵌入方法,可以计算每个单词在给定的语料库环境下的分布式向量,如果两个单词的语义相近,那么词向量在向量空间中也相互接近,判断向量空间的接近程度来判断来两个单词是否相似
首先导入Word2Vec所需要的包,并创建可以代表文档的词语序列
如果是由数组构成的相关元素,在转换成相关的DataFrame需要用 Tuple1.apply
import org.apache.spark.ml.feature.Word2Vec
val documentDF=spark.createDataFrame(Seq(
"Hi i heard about spark".split(" "),
"I wish Java could use case classes".split(" "),
"Logistic regression models are neat".split(" "),
"Hi i love MapReduce".split(" ")
).map(Tuple1.apply)).toDF("text")
新建一个word2vec 单词出现0次以上统计
val word2Vec=new Word2Vec().setInputCol("text").setOutputCol("result").setVectorSize(3).setMinCount(0)
读入训练数据,用fit()方法生成word2vecmodel
val model=word2Vec.fit(documentDF)
把文档转换成特征向量
val result=model.transform(documentDF)
result.select(“result”).take(3).foreach(println)
结果如下所示