如何在无监督学习模型(cbow、skipgram)的fasttext中获取最近邻?

Isi*_*raG 5 python nearest-neighbor unsupervised-learning fasttext

fasttext 官方网站 (fasttext.cc) 上的示例(与单词表示相关)表明,可以计算使用 cbow(或skip-gram 模型)导出的向量(简而言之,在无监督学习模型上)的最近邻。据称,这可以使用get_nearest_neighbors模型 ( model.get_nearest_neighbors) 上的函数来完成。然而,当我尝试执行该操作时,Python (3.7.) 向我显示了一条消息,即对于无监督学习模型,fasttext 中不存在此函数,事实上,当我查看 fasttext 帮助时,我没有看到此函数。唯一存在的类似函数是模型上的谓词(model.predict(其中指定 k)),但这只能在监督学习模型上完成。

谁能向我解释发生了什么事,并帮助我解决这个问题?有什么方法可以计算 fasttext 中无监督学习模型的最近邻居吗?:-)

小智 3

虽然fasttext有一个get_nearest_neighbor方法,但他们的pypi版本仍然没有该方法。

因此,您可以安装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)