【问题标题】:Loadiing a trained Word2Vec model in Spark在 Spark 中加载经过训练的 Word2Vec 模型
【发布时间】:2018-01-11 12:47:07
【问题描述】:

我正在尝试将谷歌的预训练向量“GoogleNews-vectors-negative300.bin.gz”Google-word2vec 加载到 spark 中。

我将 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

我不确定“vectors.txt”之后的“元数据”是从哪里来的。 我正在为 Eclipse 使用 Spark、Scala 和 Scala IDE。

我做错了什么?有没有其他方法可以在 spark 中加载预训练模型?希望有任何提示。

【问题讨论】:

    标签: scala apache-spark word2vec


    【解决方案1】:

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

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

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

    很遗憾,尚未实现从 Google 的原生格式加载(请参阅 SPARK-9484)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 2017-06-26
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      相关资源
      最近更新 更多