-
-
Save bhaettasch/d7f4e22e79df3c8b6c20 to your computer and use it in GitHub Desktop.
from gensim.models import Word2Vec | |
# Load pretrained model (since intermediate data is not included, the model cannot be refined with additional data) | |
model = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True, norm_only=True) | |
dog = model['dog'] | |
print(dog.shape) | |
print(dog[:10]) | |
# Deal with an out of dictionary word: Михаил (Michail) | |
if 'Михаил' in model: | |
print(model['Михаил'].shape) | |
else: | |
print('{0} is an out of dictionary word'.format('Михаил')) | |
# Some predefined functions that show content related information for given words | |
print(model.most_similar(positive=['woman', 'king'], negative=['man'])) | |
print(model.doesnt_match("breakfast cereal dinner lunch".split())) | |
print(model.similarity('woman', 'man')) |
@maifeeulasad have you tried removing the extra
.gz
from...ative300.bin.gz.gz
?
...ative300.bin.gz.gz
permission is not granted to change the name of the file.What else can be done, suggest?
If you are using windows, then open CMD
with admin privilege and navigate to that directory.
Now execute command rename GoogleNews-vectors-negative300.bin.gz.gz GoogleNews-vectors-negative300.bin.gz
If you are on linux, there is mv
and many more command
wv = gensim.models.KeyedVectors.load_word2vec_format("E:\GoogleNews-vectors-negative300.bin", binary=True)
wv.init_sims(replace=True)
i'm using this. but i want to less RAM. is it possible to load the .bin file part by part? for example in 3 steps? in order to decrease the RAM usage?
@mamad-knight yes, anything can be done using computer, except getting girlfriend and some abstract ....
Now, I have never done this, so I'm not sure, but
import numpy as np
filepath = "../input/embeddings/GoogleNews-vectors-negative300/GoogleNews-vectors-negative300.bin"
embeddings_index = {}
from gensim.models import KeyedVectors
wv_from_bin = KeyedVectors.load_word2vec_format(filepath, binary=True)
for word, vector in zip(wv_from_bin.vocab, wv_from_bin.vectors):
coefs = np.asarray(vector, dtype='float32')
embeddings_index[word] = coefs
Try to split the file and read like this.
I found the code here.
Rest you have to take care, maybe you can knock me, not sure if I can help or not...
Thanks for spending time, but i don't think it work. because the solution is not to load the whole .bin file. as soon as you load it, the RAM usage goes max.
try colab , not sure if they support such huge files @mamad-knight
Thanks man. i'll try it. @maifeeulasad
Try passing the url, instead of passing the location of the file..
you may even need to write your own stream receiver too..
good luck, if I'm done, i will share..
and if anyone finishes earlier, please share..
@mamad-knight
Thanks so much for spending time. i'll try it today or tomorrow. @maifeeulasad
Is there any API of this model so I can call it and get a vector for any word and without loading that model at my server? someone please help me with this, I am thinking this because my server can afford 4gb of ram for this model.
Thanks In advance.
Since this example this deprecated, I created a Google Colab demo for the same.
Reg "the model cannot be refined with additional data" - gensim has an online algorithm which allows to augment existing model (since 2015) https://rutumulkar.com/blog/2015/word2vec/
AttributeError: The vocab attribute was removed from KeyedVector in Gensim 4.0.0.
Use KeyedVector's .key_to_index dict, .index_to_key list, and methods .get_vecattr(key, attr) and .set_vecattr(key, attr, new_val) instead.
See https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4
Google Colab demo
Thank you for the Colab demo !!
...ative300.bin.gz.gz
permission is not granted to change the name of the file.What else can be done, suggest?