我正在尝试将谷歌的预训练向量'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
我不确定"矢量.txt"之后的"元数据"从何而来。 我正在使用Spark,Scala和Scala IDE进行Eclipse。
我做错了什么? 有没有其他方法可以在Spark中加载预先训练的模型?将不胜感激任何提示。
你到底是如何得到矢量.txt的?如果你阅读JavaDoc for Word2VecModel.save,你可能会看到:
这样可以节省: - 人类可读 (JSON( 模型元数据到路径/元数据/- 拼花格式化数据到路径/数据/
可以使用 Loader.load 加载模型。
因此,您需要的是Parquet格式的模型,这是Spark ML模型的标准。
不幸的是,来自Google本机格式的加载尚未实现(请参阅SPARK-9484(。