如何用FastText找到类似的单词?

Isb*_*ter 8 python nlp word2vec fasttext

我正在玩FastText,https: //pypi.python.org/pypi/fasttext 非常相似FastText.因为它似乎是一个非常新的库,但还没有很多内置函数.我想知道如何提取形态相似的词,例如:Word2Vec- >狗.但是没有内置的功能.

如果我输入model.similar_word("dog")I只获得向量,那可能用于比较余弦相似度model["dog"].我是否必须进行某种循环并对model.cosine_similarity(model["dog"], model["dogs"]])文本中所有可能的对进行操作?那需要时间......

Sne*_*hal 14

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


小智 9

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

from pyfasttext import FastText
model = FastText('model.bin')
model.nearest_neighbors('dog', k=2000)
Run Code Online (Sandbox Code Playgroud)

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

import fasttext
model = fasttext.load_model('model.bin')
model.get_nearest_neighbors('dog', k=100)
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以安装并导入gensim库,然后使用 gensim 库从您从FastText下载的模型中提取最相似的单词。

用这个:

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

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


小智 5

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

m = gensim.models.Word2Vec.load_word2vec_format('model.vec')
m.most_similar(...)
Run Code Online (Sandbox Code Playgroud)