在Spark中加载训练有素的Word2Vec模型

时间:2017-08-03 18:46:40

标签: scala apache-spark word2vec

我正在尝试加载谷歌的预训练媒介' GoogleNews-vectors-negative300.bin.gz' Google-word2vec成火花。

我将bin文件转换为txt并创建了一个较小的块用于测试,我调用了' vectors.txt'。我尝试将其加载如下:

      val sparkSession = SparkSession.builder
  .master("local[*]")
  .appName("Word2VecExample")
  .getOrCreate()

  val model2= Word2VecModel.load(sparkSession.sparkContext, "src/main/resources/vectors.txt")

  val synonyms = model2.findSynonyms("the", 5)

  for((synonym, cosineSimilarity) <- synonyms) {
    println(s"$synonym $cosineSimilarity")
  }

令我惊讶的是我面临以下错误:

Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/home/elievex/Repository/ARCANA/src/main/resources/vectors.txt/metadata

我不知道&#39;元数据&#39;在哪里?在&#39; vectors.txt&#39;之后来自。 我在Eclipse中使用Spark,Scala和Scala IDE。

我做错了什么?是否有一种不同的方式来加载预先训练的火花模型?非常感谢任何提示。

1 个答案:

答案 0 :(得分:0)

你究竟是怎么得到vector.txt的?如果您阅读Word2VecModel.save的JavaDoc,您可能会看到:

  

这节省了: - 人类可读(JSON)模型元数据到路径/元数据/ - Parquet格式化数据到路径/数据/   
可以使用Loader.load加载模型。

所以你需要的是Parquet格式的模型,这是Spark ML模型的标准。

不幸的是,Google的原生格式的加载尚未实现(请参阅SPARK-9484)。