gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:50:37 27 4
gpt4 key购买 nike

我生成了一个 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_word2vec_format() 加载

移植模型的唯一原因是继续训练。这种增量训练虽然可能,但需要考虑很多权衡,以平衡较早和较晚训练的影响以获得良好的结果。

如果您实际上想要进行这种转换以便以这种方式进行更多训练,这再次表明使用原始训练来重现类似模型可能是合理的。

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

  • 已知词向量(model.wv.vectors in gensim)
  • 单词的已知词汇表,包括有关单词频率和单个单词位置的统计信息(gensim 中的 model.wv.vocab)
  • 模型的隐藏到输出权重(`model.trainables' 及其在 gensim 中的属性)
  • 描述模型模式和元参数的其他模型属性

合理的交互方式可能是:

  • 编写一些采用两种类型模型的验收测试,并测试它们是否真正“等同”于您的目的。 (这对于仅检查单个单词的向量是否存在且相同而言相对容易,但几乎与验证其他准备好接受更多行为的转换本身一样困难。)

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

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

PySpark 模型可能会缺少 gensim 模型预期的内容,这可能需要合成可行的替换值。

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

关于pyspark - 将 PySpark ML Word2Vec 模型转换为 Gensim Word2Vec 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53963743/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com