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