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)
Source: docs
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?