为什么 java.lang.IllegalStateException 出现在 运行 Word2VecExample 形成 Scala Spark mllib 时?
Why java.lang.IllegalStateException occurs when running Word2VecExample form Scala Spark mllib?
我正在尝试读取 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)
,但我确定这是真的,因为我 运行 程序与其他一些文件正确。
您好,对Spark不是很了解。也不能 post 发表评论,所以必须回答。查看文档 here.
.findSynonyms("string",num)
"Find "num" 与给定单词最相似的单词数,不包括单词本身。"
所以我不禁想知道正在寻找字符串“1”可能不是问题所在。在我的脑海中,我很难找到“1”的 5 个同义词,也许是 "one",也许是 "uniary",或者可能是 "individual"。根据我的阅读,Spark 是一个机器学习库,所以您是否尝试简化这个问题?也许要求一个同义词或提供一个更简单的字符串来搜索 "happy"。不过,这只是我的两分钱,主要是对实际发生的事情感到好奇。
基于 Spark 示例和 documentation,此错误源自 findSynonyms(String, int)
方法。此方法中的 String 参数必须有一个向量,如果不存在此向量,则错误
Java.lang.IllegalStateException.
出现。
因此,在我的示例中,输入字符串参数“1”没有向量。
我正在尝试读取 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)
,但我确定这是真的,因为我 运行 程序与其他一些文件正确。
您好,对Spark不是很了解。也不能 post 发表评论,所以必须回答。查看文档 here.
.findSynonyms("string",num) "Find "num" 与给定单词最相似的单词数,不包括单词本身。"
所以我不禁想知道正在寻找字符串“1”可能不是问题所在。在我的脑海中,我很难找到“1”的 5 个同义词,也许是 "one",也许是 "uniary",或者可能是 "individual"。根据我的阅读,Spark 是一个机器学习库,所以您是否尝试简化这个问题?也许要求一个同义词或提供一个更简单的字符串来搜索 "happy"。不过,这只是我的两分钱,主要是对实际发生的事情感到好奇。
基于 Spark 示例和 documentation,此错误源自 findSynonyms(String, int)
方法。此方法中的 String 参数必须有一个向量,如果不存在此向量,则错误
Java.lang.IllegalStateException.
出现。 因此,在我的示例中,输入字符串参数“1”没有向量。