如何使用 FastText 查找相似词?

How to find similar words with FastText?

我正在玩弄 FastTexthttps://pypi.python.org/pypi/fasttext,这与 Word2Vec 非常相似。由于它似乎是一个相当新的库,内置函数还不多,我想知道如何提取形态相似的词。

例如:model.similar_word("dog") -> 狗。但是没有内置函数

如果我输入 model["dog"]

我只得到向量,可以用来比较余弦相似度。 model.cosine_similarity(model["dog"], model["dogs"]])

我是否必须进行某种循环并对文本中所有可能的对执行 cosine_similarity?那需要时间...!!!

你应该使用gensim加载model.vec然后得到类似的词:

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

使用 Gensim,使用 load.word2vec 模型加载经过 fastText 训练的 .vec 文件,并使用 most_similiar() 方法查找相似词!

您可以安装并导入 gensim library and then use gensim library to extract most similar words from the model that you downloaded from FastText

使用这个:

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

并且通过 topn 参数,您可以获得前 10 个最相似的词。

您可以安装 pyfasttext 库来提取与特定单词最相似或最接近的单词。

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

或者你可以得到最新开发版的fasttext,你可以从github repository安装:

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

使用gensim,

from gensim.models import FastText

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

更多信息here

Fasttext 有一个名为 get_nearest_neighbors 的方法。 nearest neighbor queries。需要模型的 .bin 文件才能使用它。