我正在尝试加载谷歌的预训练媒介' 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。
我做错了什么?是否有一种不同的方式来加载预先训练的火花模型?非常感谢任何提示。
答案 0 :(得分:0)
你究竟是怎么得到vector.txt的?如果您阅读Word2VecModel.save的JavaDoc,您可能会看到:
这节省了: - 人类可读(JSON)模型元数据到路径/元数据/ - Parquet格式化数据到路径/数据/
可以使用Loader.load加载模型。
所以你需要的是Parquet格式的模型,这是Spark ML模型的标准。
不幸的是,Google的原生格式的加载尚未实现(请参阅SPARK-9484)。