According to gensim docs, you can take an existing word2vec model and further train it on new words.
The training is streamed, meaning sentences can be a generator, reading input data from disk on-the-fly, without loading the entire corpus into RAM.
It also means you can continue training the model later:
model = Word2Vec.load("word2vec.model") model.train([["hello", "world"]], total_examples=1, epochs=1)
But when I actually try it, it doesn't seem to learn the new terms.
from gensim.models import Word2Vec # initial a model model = Word2Vec([["cat", "say", "meow"], ["dog", "say", "woof"]], min_count=1) # count terms in model print( len(model.wv.vocab) ) => 5
# train existing model on new terms model.train([['potoatoes', 'and', 'farmers']], total_examples=model.corpus_count, epochs=model.epochs) # count terms in model print( len(model.wv.vocab) ) => 5
After adding new terms in the 2nd code block, the model still only has the same number of terms as before.
How can I make this work?