I am using gensim library to find most similar words to some words that I have. Using 10000 data samples (short text mainly 1-2 sentences) to train, I get really bad results! Why this is so? Also by repeating train and test it get different results. Should not it be deterministic?

model = gensim.models.Word2Vec(senforword2vec)
print(model.most_similar(positive=['bad'], topn=1))

[('amount', 0.9987443089485168)]

In another train and

[('yet', 0.9984885454177856)]

  • $\begingroup$ My guess is that you can make your results consistent by running the model one thread (set workers to 1) and/or by setting the seed in the beginning. $\endgroup$
    – So S
    Oct 13, 2017 at 12:43

1 Answer 1


It seems that you are training on a very small dataset. A dataset of size 10000 samples will bring out less than 5k words after preprocessing, which I think isn't enough for your model to learn the relations. Try increasing your dataset and then train. Also, you can tune your parameters while training. Try changing window size (default is 5), embedding size and min count. Generally, 100 is a good embedding size, but you can tweak it and see what gives you better results.

You can try using already trained word2vec model released by Google. It's 1.5GB and includes word vectors for a vocabulary of 3 million words and phrases that they trained on roughly 100 billion words from a Google News dataset.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.