How to find similar words with FastText?

19,477

Solution 1

Use Gensim, load fastText trained .vec file with load.word2vec models and use most_similiar() method to find similar words!

Solution 2

You can install pyfasttext library to extract the most similar or nearest words to a particualr word.

from pyfasttext import FastText
model = FastText('model.bin')
model.nearest_neighbors('dog', k=2000)

Or you can get the latest development version of fasttext, you can install from the github repository :

import fasttext
model = fasttext.load_model('model.bin')
model.get_nearest_neighbors('dog', k=100)

Solution 3

You should use gensim to load the model.vec and then get similar words:

m = gensim.models.Word2Vec.load_word2vec_format('model.vec')
m.most_similar(...)

Solution 4

You can install and import gensim library and then use gensim library to extract most similar words from the model that you downloaded from FastText.

Use this:

import gensim
model = gensim.models.KeyedVectors.load_word2vec_format('model.vec')
similar = model.most_similar(positive=['man'],topn=10)

And by topn parameter you get the top 10 most similar words.

Solution 5

Use gensim,

from gensim.models import FastText

model = FastText.load(PATH_TO_MODEL)
model.wv.most_similar(positive=['dog'])

More info here

Share:
19,477
Isbister
Author by

Isbister

Computer Science student from Uppsala

Updated on June 27, 2022

Comments

  • Isbister
    Isbister almost 2 years

    I am playing around with FastText, https://pypi.python.org/pypi/fasttext,which is quite similar to Word2Vec. Since it seems to be a pretty new library with not to many built in functions yet, I was wondering how to extract morphological similar words.

    For eg: model.similar_word("dog") -> dogs. But there is no function built-in.

    If I type model["dog"]

    I only get the vector, that might be used to compare cosine similarity. model.cosine_similarity(model["dog"], model["dogs"]]).

    Do I have to make some sort of loop and do cosine_similarity on all possible pairs in a text? That would take time ...!!!

  • kzs
    kzs over 5 years
    Is their any API in fasttext that allows one to input two words and then returns their cosine similarity? Say something like (car,vehicle) and then returns something like 0.8?