Uploaded image for project: 'Spark'
  1. Spark
  2. SPARK-12680

Loading Word2Vec model in pyspark gives "ValueError: too many values to unpack" in findSynonyms

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Duplicate
    • Affects Version/s: 1.5.2
    • Fix Version/s: None
    • Component/s: MLlib, PySpark
    • Labels:
      None

      Description

      I can train a model with Word2Vec and then persist it with Word2VecModel#save. If I load the saved model in pyspark (using python 2.7.10), I get the following error (model.transform included to show that other methods work).

      In [3]: from pyspark.mllib.feature import Word2VecModel
      
      In [4]: model = Word2VecModel.load(sc,"word_vec_from_cleaned_query.model")
      SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
      SLF4J: Defaulting to no-operation (NOP) logger implementation
      SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
      16/01/06 12:36:11 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
      16/01/06 12:36:11 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
      
      In [5]: model.findSynonyms('white',10)
      ---------------------------------------------------------------------------
      ValueError                                Traceback (most recent call last)
      <ipython-input-5-6105c004edd9> in <module>()
      ----> 1 model.findSynonyms('white',10)
      
      /usr/local/Cellar/apache-spark/1.5.2/libexec/python/pyspark/mllib/feature.pyc in findSynonyms(self, word, num)
          448         if not isinstance(word, basestring):
          449             word = _convert_to_vector(word)
      --> 450         words, similarity = self.call("findSynonyms", word, num)
          451         return zip(words, similarity)
          452 
      
      ValueError: too many values to unpack
      
      In [6]: model.transform('white')
      Out[6]: DenseVector([-0.0213, 0.2292, -0.2012, 0.107, -0.1475, 0.0578, 0.0731, -0.098, -0.1528, 0.1077, 0.0158, -0.0155, -0.1487, 0.0343, 0.2244, 0.0447, 0.2362, -0.1767, 0.064, -0.0148, -0.1291, -0.0171, -0.0642, -0.0754, 0.0417, 0.1547, 0.2745, -0.1178, -0.2895, -0.1314, 0.1023, -0.11, 0.0142, 0.0156, 0.1102, 0.0785, -0.0981, 0.0504, -0.0627, -0.0773, 0.0023, 0.1826, 0.1759, -0.1581, 0.3913, 0.0829, 0.0728, 0.1478, -0.0123, -0.1745, 0.2762, 0.0312, 0.138, 0.0786, -0.0546, 0.5123, 0.237, -0.0241, 0.1594, -0.0645, -0.0425, 0.1265, 0.0305, -0.3164, 0.0601, 0.0565, 0.0066, -0.0818, -0.384, -0.1513, 0.0775, -0.2278, -0.1478, -0.0659, -0.0778, 0.3194, -0.1931, -0.2991, 0.1629, 0.1018, -0.0603, 0.1091, -0.0334, -0.0513, 0.1067, 0.1273, 0.1187, 0.0461, 0.0407, 0.0515, 0.0958, 0.0498, -0.1561, 0.1726, -0.006, -0.0262, -0.0106, 0.1623, 0.1477, -0.0509])
      
      In [7]: 
      

      I think that this is a pyspark-specific error, since I can load the trained model in the scala spark-shell and use findSynonyms:

      scala> import org.apache.spark.mllib.feature.{Word2Vec, Word2VecModel}
      import org.apache.spark.mllib.feature.{Word2Vec, Word2VecModel}
      
      scala> val model = Word2VecModel.load(sc,"word_vec_from_cleaned_query.model")
      SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
      SLF4J: Defaulting to no-operation (NOP) logger implementation
      SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
      16/01/06 14:17:14 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeSystemBLAS
      16/01/06 14:17:14 WARN BLAS: Failed to load implementation from: com.github.fommil.netlib.NativeRefBLAS
      model: org.apache.spark.mllib.feature.Word2VecModel = org.apache.spark.mllib.feature.Word2VecModel@2e7da886
      
      scala> model.findSynonyms("white",10)
      res0: Array[(String, Double)] = Array((stylish,0.8347662648041679), (shirt,0.7721922530954246), (stripe,0.7311193884955149), (striped,0.7033047124091971), (buttons,0.6891310548525095), (womens,0.671437501511924), (zaful,0.6659281321485323), (dorateymur,0.6654344754707424), (womenns,0.6637001786899768), (long,0.6573707323598634))
      
      scala> 
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                sloane.simmons Sloane Simmons
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: