Python 基于fasttext的词语相似度查询

Python 基于fasttext的词语相似度查询,python,nltk,distance,fasttext,Python,Nltk,Distance,Fasttext,我有两张单子 清单1:未来证明 清单2:富国酒吧前的房子 我想计算列表1中的每个单词与列表2中的每个单词之间的语义距离。 Fasttext有一个很好的功能来显示最近的邻居,但是如果有一种方法可以读出两个定义单词之间的语义距离,那就更好了。 有人能帮忙吗 感谢不幸的是,NLTK中没有直接使用单词相似性函数,尽管NLTK中通过WordNet API支持语法集相似性 虽然并非详尽无遗,但以下是一系列经过预训练的单词嵌入,可用于找出单词向量的余弦相似性: 为了使用,这里有一个使用HLBL嵌入的示例(来自

我有两张单子

清单1:未来证明 清单2:富国酒吧前的房子

我想计算列表1中的每个单词与列表2中的每个单词之间的语义距离。 Fasttext有一个很好的功能来显示最近的邻居,但是如果有一种方法可以读出两个定义单词之间的语义距离,那就更好了。 有人能帮忙吗


感谢

不幸的是,NLTK中没有直接使用单词相似性函数,尽管NLTK中通过WordNet API支持语法集相似性

虽然并非详尽无遗,但以下是一系列经过预训练的单词嵌入,可用于找出单词向量的余弦相似性:

为了使用,这里有一个使用HLBL嵌入的示例(来自Turian et al.2011)(向下滚动到data explorer并直接下载目录,dataset页面顶部的下载按钮似乎会导致一些损坏的数据)

下载后,您可以使用
numpy
加载嵌入:

>>> import pickle 
>>> import numpy as np

>>> embeddings = np.load('hlbl.rcv1.original.50d.npy')
>>> tokens = [line.strip() for line in open('hlbl.rcv1.original.50d.txt')]
>>> embeddings[tokens.index('hello')]
array([-0.21167406, -0.04189226,  0.22745571, -0.09330438,  0.13239339,
        0.25136262, -0.01908735, -0.02557277,  0.0029353 , -0.06194451,
       -0.22384156,  0.04584747,  0.03227248, -0.13708033,  0.17901117,
       -0.01664691,  0.09400477,  0.06688628, -0.09019949, -0.06918809,
        0.08437972, -0.01485273, -0.12062263,  0.05024147, -0.00416972,
        0.04466985, -0.05316647,  0.00998635, -0.03696947,  0.10502578,
       -0.00190554,  0.03435732, -0.05715087, -0.06777468, -0.11803425,
        0.17845355,  0.18688948, -0.07509124, -0.16089943,  0.0396672 ,
       -0.05162677, -0.12486628, -0.03870481,  0.0928738 ,  0.06197058,
       -0.14603543,  0.04026282,  0.14052328,  0.1085517 , -0.15121481])
要计算两个numpy数组的相似性,可以尝试


不幸的是,NLTK中没有直接使用单词相似性函数,尽管NLTK中通过WordNet API支持语法集相似性

虽然并非详尽无遗,但以下是一系列经过预训练的单词嵌入,可用于找出单词向量的余弦相似性:

为了使用,这里有一个使用HLBL嵌入的示例(来自Turian et al.2011)(向下滚动到data explorer并直接下载目录,dataset页面顶部的下载按钮似乎会导致一些损坏的数据)

下载后,您可以使用
numpy
加载嵌入:

>>> import pickle 
>>> import numpy as np

>>> embeddings = np.load('hlbl.rcv1.original.50d.npy')
>>> tokens = [line.strip() for line in open('hlbl.rcv1.original.50d.txt')]
>>> embeddings[tokens.index('hello')]
array([-0.21167406, -0.04189226,  0.22745571, -0.09330438,  0.13239339,
        0.25136262, -0.01908735, -0.02557277,  0.0029353 , -0.06194451,
       -0.22384156,  0.04584747,  0.03227248, -0.13708033,  0.17901117,
       -0.01664691,  0.09400477,  0.06688628, -0.09019949, -0.06918809,
        0.08437972, -0.01485273, -0.12062263,  0.05024147, -0.00416972,
        0.04466985, -0.05316647,  0.00998635, -0.03696947,  0.10502578,
       -0.00190554,  0.03435732, -0.05715087, -0.06777468, -0.11803425,
        0.17845355,  0.18688948, -0.07509124, -0.16089943,  0.0396672 ,
       -0.05162677, -0.12486628, -0.03870481,  0.0928738 ,  0.06197058,
       -0.14603543,  0.04026282,  0.14052328,  0.1085517 , -0.15121481])
要计算两个numpy数组的相似性,可以尝试


如果你有向量这个词,你可以简单地使用余弦相似性。谢谢。分类!Gensim可以做到!如果你有向量这个词,你可以简单地使用余弦相似性。谢谢。分类!Gensim可以做到!