Я пытаюсь прочитать текстовый файл в Примеры Spark-mllib (Word2VecExample) и создать в нем векторы слов. Я запускаю его по некоторым текстовым файлам, и он не выдает ошибки, но при чтении одного из моих файлов выдает эту ошибку, и я действительно запутался с этим, потому что я пробовал все, например, формат файла ( utf-8 ) и ASCII символов.
это мой исходный код:
package org.apache.spark.examples.mllib
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
// $example on$
import org.apache.spark.mllib.feature.{Word2Vec, Word2VecModel}
// $example off$
object Word2VecExample {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("Word2VecExample")
conf.setMaster("local[4]")
val sc = new SparkContext(conf)
val input = sc.textFile("C:\\Users\\...\\Desktop\\yelp_labelled.txt").map(line => line.split(" ").toSeq)
val word2vec = new Word2Vec()
val model = word2vec.fit(input)
val synonyms = model.findSynonyms("1", 5)
for((synonym, cosineSimilarity) <- synonyms) {
println(s"$synonym $cosineSimilarity")
}
model.save(sc, "C:\\Users\\...\\Desktop\\Edited1Yelp")
val sameModel = Word2VecModel.load(sc, "C:\\Users\\...\\Edited1Yelp")
// $example off$
sc.stop()
}
}
И это ошибка:
Exception in thread "main" 19/05/29 18:36:29 INFO BlockManagerInfo: Removed broadcast_4_piece0 on DESKTOP-T5EN156:64774 in memory (size: 13.0 KB, free: 2.2 GB)
java.lang.IllegalStateException: 1 not in vocabulary
at org.apache.spark.mllib.feature.Word2VecModel.transform(Word2Vec.scala:533)
at org.apache.spark.mllib.feature.Word2VecModel.findSynonyms(Word2Vec.scala:545)
at org.apache.spark.examples.mllib.Word2VecExample$.main(Word2VecExample.scala:43)
at org.apache.spark.examples.mllib.Word2VecExample.main(Word2VecExample.scala)
И строка 43 относится к val synonyms = model.findSynonyms("1", 5)
, но я уверен, что это правда, потому что я правильно запускаю программу с некоторыми другими файлами.