首页 > 解决方案 > 如何将 word2vec 转换为手套格式

问题描述

我做了一些研究,发现 gensim 有一个脚本可以将 glove 转换为 word2vec GLove2Wrod2Vec。我正在寻找相反的做法。

是否有任何简单的方法可以使用 gensim 或任何其他库进行转换

标签: pythonnlpgensimword2vecword-embedding

解决方案


.txt手套矢量文件格式和 word2vec 文件格式之间的唯一区别是 word2vec格式的开头有一行

<num words> <num dimensions>

否则,向量以相同的方式表示。我们不需要改变向量来改变格式。

引用您在问题中链接的页面:

Both files are
presented in text format and almost identical except that word2vec includes
number of vectors and its dimension which is only difference regard to GloVe.
Notes
-----
GloVe format (real example can be founded `on Stanford size <https://nlp.stanford.edu/projects/glove/>`_) ::
    word1 0.123 0.134 0.532 0.152
    word2 0.934 0.412 0.532 0.159
    word3 0.334 0.241 0.324 0.188
    ...
    word9 0.334 0.241 0.324 0.188
Word2Vec format (real example can be founded `on w2v old repository <https://code.google.com/archive/p/word2vec/>`_) ::
    9 4
    word1 0.123 0.134 0.532 0.152
    word2 0.934 0.412 0.532 0.159
    word3 0.334 0.241 0.324 0.188
    ...
    word9 0.334 0.241 0.324 0.188

在上面的例子中,word2vec 的第一行9 4告诉我们词汇表中有 9 个单词,每个单词有 4 个维度。

TL;DR 因此,从w2v->转换glove<num words> <num dimensions>w2v. 无论如何,您都可以从文件中推断出它。

要从glove->转换w2v:将<num words> <num dimensions>行添加到glove.

您可以手动完成,但 gensim 提供了一种从一个到另一个的方式。


推荐阅读