Почему возникает java.lang.IllegalStateException при запуске Word2VecExample из Scala Spark mllib? - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь прочитать текстовый файл в Примеры 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), но я уверен, что это правда, потому что я правильно запускаю программу с некоторыми другими файлами.

Ответы [ 2 ]

1 голос
/ 01 июня 2019

На основании примера Spark и документации эта ошибка возникает из метода findSynonyms(String, int). В этом методе должен быть вектор для параметра String, и если для этого не существует вектора, выдается ошибка

java.lang.IllegalStateException.

* Появляется 1009 *. Итак, в моем примере нет вектора для входного параметра String " 1 ".
1 голос
/ 01 июня 2019

Привет, не знаю много о Спарк. Также не можете оставлять комментарии, поэтому ответ придется сделать. Глядя на документацию здесь .

.findSynonyms ( "строка", Num) Msgstr "Найти" num "количество слов, наиболее близких к данному слову, не считая самого слова."

Так что я не могу не задаться вопросом, ищет ли строку "1", не проблема. Вдобавок ко всему, я изо всех сил пытаюсь найти 5 синонимов для «1», возможно, «один», может быть «единый» или потенциально «индивидуальный». Из того, что я прочитал, Spark - это библиотека машинного обучения, поэтому вы пытались придумать вопрос? Может быть, попросить один синоним или дать более простую строку для поиска, как "счастливый". Это всего лишь два моих цента, и в основном мне просто любопытно, что на самом деле происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...