首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySpark ML Word2Vec模型到Gensim Word2Vec模型的转换

PySpark ML Word2Vec模型到Gensim Word2Vec模型的转换
EN

Stack Overflow用户
提问于 2018-12-28 20:02:24
回答 1查看 1.1K关注 0票数 3

我生成了一个类似于这样的PySpark Word2Vec模型:

代码语言:javascript
复制
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模型。我该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2018-12-29 06:51:33

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

如果您只需要字向量,也许PySpark的模型可以以word2vec.c格式导出它们,gensim可以用.load_word2vec_format()加载这些格式。

将该模型移植的唯一原因是继续进行培训。这种渐进式的培训,虽然可能,但需要考虑许多权衡的影响,在老的和后期的培训,以获得良好的结果。

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

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

  • 已知的字向量(gensim中的model.wv.vectors)
  • 单词的已知词汇,包括关于单词频率和单个单词位置的统计数据(model.wv.vocab在gensim中)
  • 模型(`model.trainables‘)的隐输出权值及其在gensim中的性质
  • 描述模型模式的其他模型属性&元参数

一种合理的互动办法可以是:

  • 编写一些接受测试,采用两种类型的模型,并测试它们对您的目的是否真正“等效”。(这相对容易检查单个单词的向量是否存在和相同,但几乎与验证其他准备接受培训的更多行为的转换本身一样困难。)
  • 然后,在交互式笔记本中加载源模型,并创建一个具有相同词汇量的虚拟gensim模型。参考源代码,编写Python语句,迭代地将关键属性从源代码复制/转换到目标中,并反复测试它们是否等效。
  • 当它们完成时,请手动执行这些步骤,并将它们组合成一个实用程序方法来完成转换。再次验证它的操作,然后尝试使用您希望的转换模型--可能会发现被忽略的信息或发现过程中的其他错误,然后改进验证方法和转换方法。

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

祝好运!(但是,如果你想让事情变得简单和有效的话,可以从原始数据重新训练gensim模型。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53963743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档