Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PySpark ML Word2Vec模型转换为Gensim Word2Vec模型_Pyspark_Gensim_Word2vec - Fatal编程技术网

将PySpark ML Word2Vec模型转换为Gensim Word2Vec模型

将PySpark ML Word2Vec模型转换为Gensim Word2Vec模型,pyspark,gensim,word2vec,Pyspark,Gensim,Word2vec,我生成了一个PySpark Word2Vec模型,如下所示: from pyspark.ml.feature import Word2Vec w2v = Word2Vec(vectorSize=100, minCount=1, inputCol='words', outputCol = 'vector') model = w2v.fit(df) (我用来训练模型的数据并不相关,重要的是它的格式正确,并且成功地生成了一个pyspark.ml.feature.Word2VecModel对象。)

我生成了一个PySpark Word2Vec模型,如下所示:

from pyspark.ml.feature import Word2Vec

w2v = Word2Vec(vectorSize=100, minCount=1, inputCol='words', outputCol = 'vector')
model = w2v.fit(df)
(我用来训练模型的数据并不相关,重要的是它的格式正确,并且成功地生成了一个
pyspark.ml.feature.Word2VecModel
对象。)


现在我需要将此模型转换为Gensim Word2Vec模型。我该怎么做呢?

如果您仍然有培训数据,重新培训
gensim
Word2Vec
模型可能是最简单的方法

如果您只需要单词向量,也许PySpark的模型可以将它们导出为
word2vec.c
格式,而
gensim
可以使用
.load\u word2vec\u format()
加载

移植该模型的唯一原因是继续培训。这种增量培训虽然可能,但需要考虑很多权衡,以平衡旧培训和后期培训的影响,从而获得良好的效果

如果您实际上希望通过这种方式进行这种转换以进行更多的培训,那么它再次表明,使用原始培训来复制类似的模型可能是合理的

但是,如果必须转换模型,一般的方法是研究两个模型的源代码和内部数据结构,以发现它们如何交替表示模型的每个关键方面:

  • 已知字向量(
    model.wv.vectors
    gensim中)
  • 已知词汇表,包括单词频率和单个单词位置的统计数据(
    model.wv.vocab
    在gensim中)
  • 模型的隐藏到输出权重(`model.trainables'及其在gensim中的属性)
  • 描述模型模式和元参数的其他模型属性
合理的互动方式可以是:

  • 编写一些验收测试,测试这两种类型的模型,并测试它们是否真的“等效”。(这对于检查单个单词的向量是否存在和相同来说相对容易,但对于验证其他准备训练的行为来说,这几乎与转换本身一样困难。)

  • 然后,在交互式笔记本中,加载源模型,并创建具有相同词汇表大小的虚拟gensim模型。参考源代码,编写Python语句以迭代方式将密钥属性从源代码复制/转换到目标代码中,反复测试它们是否等效

  • 当他们这样做时,采取您手动执行的步骤,并将它们合并到实用程序方法中以进行转换。再次验证其操作,然后尝试按照您希望的方式使用转换后的模型——可能会发现过程中忽略的信息或发现其他错误,然后改进验证方法和转换方法

PySpark模型可能会缺少gensim模型所期望的东西,这可能需要合成可行的替换值

祝你好运!(但是,如果您希望事情变得简单和有效,请根据原始数据重新训练gensim模型。)