2024-05-23 16:24:19 发布
网友
我正在使用Gensim Python包学习一个神经语言模型,我知道您可以提供一个学习该模型的训练语料库。但是,已经存在许多文本格式的预计算字向量(例如http://www-nlp.stanford.edu/projects/glove/)。有没有什么方法可以初始化一个Gensim Word2Vec模型,它只使用一些预计算的向量,而不必从头学习向量?
谢谢!
斯坦福网站的globe dump格式与word2vec格式略有不同。您可以使用以下命令将手套文件转换为word2vec格式:
python -m gensim.scripts.glove2word2vec --input glove.840B.300d.txt --output glove.840B.300d.w2vformat.txt
据我所知,Gensim可以加载两种二进制格式,word2vec和fastText,以及一种通用的纯文本格式,大多数嵌入工具都可以创建这种格式。一般的纯文本格式如下(在本例中,20000是词汇表的大小,100是向量的长度)
20000 100 the 0.476841 -0.620207 -0.002157 0.359706 -0.591816 [98 more numbers...] and 0.223408 0.231993 -0.231131 -0.900311 -0.225111 [98 more numbers..] [19998 more lines...]
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)
2)加载二进制快速文本
model = gensim.models.fasttext.FastText.load_fasttext_format(model_file)
3)加载通用纯文本格式(由word2vec引入)
model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_word2vec_format(model_file)
如果您只打算使用单词embeddings,而不打算继续在Gensim中训练它们,那么您可能需要使用keyedvvector类。这将大大减少加载向量所需的内存量(detailed explanation)。
下面将把二进制word2vec格式作为keyedvorters加载:
model = gensim.models.keyedvectors.Word2VecKeyedVectors.load_word2vec_format(model_file, binary=True)
您可以从这里下载经过预训练的单词向量(获取文件“GoogleNews-vectors-negative300.bin”): word2vec
解压缩文件,然后可以用类似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)
斯坦福网站的globe dump格式与word2vec格式略有不同。您可以使用以下命令将手套文件转换为word2vec格式:
据我所知,Gensim可以加载两种二进制格式,word2vec和fastText,以及一种通用的纯文本格式,大多数嵌入工具都可以创建这种格式。一般的纯文本格式如下(在本例中,20000是词汇表的大小,100是向量的长度)
Chaitanya Shivade在他的回答中解释了如何使用Gensim提供的脚本将手套格式(每行:word+vector)转换为通用格式。
加载不同格式很容易,但也很容易混淆:
1)加载二进制word2vec
2)加载二进制快速文本
3)加载通用纯文本格式(由word2vec引入)
如果您只打算使用单词embeddings,而不打算继续在Gensim中训练它们,那么您可能需要使用keyedvvector类。这将大大减少加载向量所需的内存量(detailed explanation)。
下面将把二进制word2vec格式作为keyedvorters加载:
您可以从这里下载经过预训练的单词向量(获取文件“GoogleNews-vectors-negative300.bin”): word2vec
解压缩文件,然后可以用类似python的语言加载:
编辑(2017年5月): 由于上面的代码现在已被弃用,因此您现在可以这样加载向量:
相关问题 更多 >
编程相关推荐