Apache spark 为什么mllib word2vec单词向量只有100个元素?

Apache spark 为什么mllib word2vec单词向量只有100个元素?,apache-spark,pyspark,apache-spark-mllib,word2vec,Apache Spark,Pyspark,Apache Spark Mllib,Word2vec,我在PySpark中创建了一个word2vec模型。模型保存为.parquet文件。我希望能够使用vanilla Python访问和查询模型(或单词和单词向量),因为我正在构建一个flask应用程序,允许用户输入感兴趣的单词来查找同义词 我已经提取了单词和单词向量,但是我注意到虽然我有大约7000个独特的单词,但是我的单词向量的长度是100。例如,这里有两个词“严重”和“休息”。它们的向量长度只有100。为什么会这样?那么,它如何能够用每个单词只有100个值来重建整个向量空间呢?这仅仅是给了我前

我在PySpark中创建了一个word2vec模型。模型保存为.parquet文件。我希望能够使用vanilla Python访问和查询模型(或单词和单词向量),因为我正在构建一个flask应用程序,允许用户输入感兴趣的单词来查找同义词

我已经提取了单词和单词向量,但是我注意到虽然我有大约7000个独特的单词,但是我的单词向量的长度是100。例如,这里有两个词“严重”和“休息”。它们的向量长度只有100。为什么会这样?那么,它如何能够用每个单词只有100个值来重建整个向量空间呢?这仅仅是给了我前100个值还是前100个值

    vectors.take(2)
    Out[48]: 
    [Row(word=u'serious', vector=DenseVector([0.0784, -0.0882, -0.0342, -0.0153, 0.0223, 0.1034, 0.1218, -0.0814, -0.0198, -0.0325, -0.1024, -0.2412, -0.0704, -0.1575, 0.0342, -0.1447, -0.1687, 0.0673, 0.1248, 0.0623, -0.0078, -0.0813, 0.0953, -0.0213, 0.0031, 0.0773, -0.0246, -0.0822, -0.0252, -0.0274, -0.0288, 0.0403, -0.0419, -0.1122, -0.0397, 0.0186, -0.0038, 0.1279, -0.0123, 0.0091, 0.0065, 0.0884, 0.0899, -0.0479, 0.0328, 0.0171, -0.0962, 0.0753, -0.187, 0.034, -0.1393, -0.0575, -0.019, 0.0151, -0.0205, 0.0667, 0.0762, -0.0365, -0.025, -0.184, -0.0118, -0.0964, 0.1744, 0.0563, -0.0413, -0.054, -0.1764, -0.087, 0.0747, -0.022, 0.0778, -0.0014, -0.1313, -0.1133, -0.0669, 0.0007, -0.0378, -0.1093, -0.0732, 0.1494, -0.0815, -0.0137, 0.1009, -0.0057, 0.0195, 0.0085, 0.025, 0.0064, 0.0076, 0.0676, 0.1663, -0.0078, 0.0278, 0.0519, -0.0615, -0.0833, 0.0643, 0.0032, -0.0882, 0.1033])),
     Row(word=u'breaks', vector=DenseVector([0.0065, 0.0027, -0.0121, 0.0296, -0.0467, 0.0297, 0.0499, 0.0843, 0.1027, 0.0179, -0.014, 0.0586, 0.06, 0.0534, 0.0391, -0.0098, -0.0266, -0.0422, 0.0188, 0.0065, -0.0309, 0.0038, -0.0458, -0.0252, 0.0428, 0.0046, -0.065, -0.0822, -0.0555, -0.0248, -0.0288, -0.0016, 0.0334, -0.0028, -0.0718, -0.0571, -0.0668, -0.0073, 0.0658, -0.0732, 0.0976, -0.0255, -0.0712, 0.0899, 0.0065, -0.04, 0.0964, 0.0356, 0.0142, 0.0857, 0.0669, -0.038, -0.0728, -0.0446, 0.1194, -0.056, 0.1022, 0.0459, -0.0343, -0.0861, -0.0943, -0.0435, -0.0573, 0.0229, 0.0368, 0.085, -0.0218, -0.0623, 0.0502, -0.0645, 0.0247, -0.0371, -0.0785, 0.0371, -0.0047, 0.0012, 0.0214, 0.0669, 0.049, -0.0294, -0.0272, 0.0642, -0.006, -0.0804, -0.06, 0.0719, -0.0109, -0.0272, -0.0366, 0.0041, 0.0556, 0.0108, 0.0624, 0.0134, -0.0094, 0.0219, 0.0164, -0.0545, -0.0055, -0.0193]))]

关于用普通python重建此模型的最佳方法有何想法?

我认为问题在于Word2Vec模型的minCount参数值。 如果该值太高,则在模型的训练中使用的单词会更少,从而导致单词向量仅为100。 7000个独特的单词并不多。 尝试将minCount设置为低于默认值5

model.setMinCount(value)

只是为了改进zero323的评论,对于任何其他来到这里的人来说。 Word2Vec有一个默认设置,用于创建100dims的字向量。要更改此设置,请执行以下操作:

model = Word2Vec(sentences, size=300)

初始化模型时,将创建300维的向量。

向量的长度为100,因为这是默认的模型参数,您最喜欢的是没有更改它。哦。。。当然谢谢。这是错误的-正确答案是上面zero323的评论