Spark Mlib(三)用spark训练词向量

本文介绍如何使用Spark框架加速词向量的训练过程。通过内存计算特性,Spark能够显著减少训练时间,尤其是在处理大规模语料时。文章提供了一个基于Word2Vec的示例代码,展示了如何设置和调整参数,如vectorSize和minCount,以及如何应用模型进行词向量的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自然语言处理中,在词的表示上,向量的方式无疑是最流行的一种。它可以作为神经网络的输入,也可直接用来计算。比如计算两个词的相似度时,就可以用这两个词向量的距离来衡量。词向量的训练需要大规模的语料,从而带来的是比较长的训练时间。spark框架基于内存计算,有忘加快词向量的训练速度。

以下是spark官网的代码(http://spark.apache.org/docs/latest/ml-features.html#word2vec)

package alg
import org.apache.spark.ml.feature.Word2Vec
import org.apache.spark.ml.linalg.Vector
import org.apache.spark.sql.{Row, SparkSession}
object word2vec {

  def main(args:Array[String]):Unit={

    val spark: SparkSession = SparkSession.builder
      .appName("My")
      .master("local[*]")
      .getOrCreate()

    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(" "))
      .map(Tuple1.apply))
      .toDF("text")
//vectorSize可以自动调节,通常为300左右
    val word2vec=new Word2Vec().setInputCol("text").setOutputCol("result").setVectorSize().setMinCount(0)
    val model=word2vec.fit(documentDF)

    val result=model.transform(documentDF)

    result.collect().foreach{ case Row(text: Seq[_], features: Vector) =>
      println(s"Text: [${text.mkString(", ")}] => \nVector: $features\n") }

  }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值