Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.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
Python 加载预计算向量Gensim_Python_Nlp_Gensim_Word2vec - Fatal编程技术网

Python 加载预计算向量Gensim

Python 加载预计算向量Gensim,python,nlp,gensim,word2vec,Python,Nlp,Gensim,Word2vec,我正在使用Gensim Python包学习神经语言模型,我知道您可以提供一个训练语料库来学习该模型。然而,已经存在许多文本格式的预计算字向量(例如)。有什么方法可以初始化Gensim Word2Vec模型,该模型只使用一些预先计算的向量,而不必从头开始学习向量 谢谢 您可以从这里下载预先训练过的单词向量(获取文件“GoogleNews-vectors-negative300.bin”): 提取文件,然后可以在python中加载它,如: model = gensim.models.word2ve

我正在使用Gensim Python包学习神经语言模型,我知道您可以提供一个训练语料库来学习该模型。然而,已经存在许多文本格式的预计算字向量(例如)。有什么方法可以初始化Gensim Word2Vec模型,该模型只使用一些预先计算的向量,而不必从头开始学习向量


谢谢

您可以从这里下载预先训练过的单词向量(获取文件“GoogleNews-vectors-negative300.bin”):

提取文件,然后可以在python中加载它,如:

model = gensim.models.word2vec.Word2Vec.load_word2vec_format(os.path.join(os.path.dirname(__file__), 'GoogleNews-vectors-negative300.bin'), binary=True)

model.most_similar('dog')
编辑(2017年5月): 由于上面的代码现在已被弃用,下面是您现在加载向量的方式:

model = gensim.models.KeyedVectors.load_word2vec_format(os.path.join(os.path.dirname(__file__), 'GoogleNews-vectors-negative300.bin'), binary=True)

斯坦福网站的手套转储格式与word2vec格式几乎没有什么不同。您可以使用以下方法将手套文件转换为word2vec格式:

python -m gensim.scripts.glove2word2vec --input  glove.840B.300d.txt --output glove.840B.300d.w2vformat.txt

据我所知,Gensim可以加载两种二进制格式,word2vec和fastText,以及大多数word嵌入工具都可以创建的通用纯文本格式。通用纯文本格式如下所示(在本例中,20000是词汇表的大小,100是向量的长度)

Chaitanya Shivade在他的回答中解释了如何使用Gensim提供的脚本将手套格式(每行:word+vector)转换为通用格式

加载不同格式很容易,但也很容易混淆:

import gensim
model_file = path/to/model/file
1) 加载二进制word2vec

model = gensim.models.word2vec.Word2Vec.load_word2vec_format(model_file)
model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_word2vec_format(model_file)
2) 加载二进制快速文本

model = gensim.models.fasttext.FastText.load_fasttext_format(model_file)
3) 加载通用纯文本格式(由word2vec引入)

如果您只打算使用单词embeddings,而不打算继续在Gensim中训练它们,那么您可能需要使用KeyedVector类。这将大大减少加载向量所需的内存量()

以下内容将二进制word2vec格式作为KeyedVector加载:

model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_word2vec_format(model_file, binary=True)

如@Chaitanya Shivade所述,在MacOS 10.13上工作的手套数据集的loading.txt格式给出了Gensim中的错误,因此我们可以将其转换为Gensim所需的格式,如w2vformat.txt,甚至是glove.840B.300d.txt.Word2vec这是加载手套预训练模型的正确答案
model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_word2vec_format(model_file, binary=True)