找到最相似的词来随机初始化数组
Find most similar words to randomy initialized array
使用 Gensim 包,我在语料库上训练了一个 word2vec 模型,如下所示:
word2vec = Word2Vec(all_words, min_count = 3, size = 512, sg = 1)
使用 Numpy,我已经初始化了一个具有相同维度的随机数组:
vector = (rand(512)-0.5) *20
现在,我想从 word2vec 中找到与我初始化的随机向量最相似的单词。
对于word2vec中的词,可以运行:
word2vec.most_similar('word')
并且输出是一个包含最相似词及其相应距离的列表。
我想为我的初始化数组获得类似的输出。
然而,当我运行:
word2vec.most_similar(vector)
我收到以下错误:
Traceback (most recent call last):
File "<ipython-input-297-3815cf183d05>", line 1, in <module>
word2vec.most_similar(vector)
File "C:\Users200016\AppData\Local\Continuum\anaconda3\lib\site-packages\gensim\utils.py", line 1461, in new_func1
return func(*args, **kwargs)
File "C:\Users200016\AppData\Local\Continuum\anaconda3\lib\site-packages\gensim\models\base_any2vec.py", line 1383, in most_similar
return self.wv.most_similar(positive, negative, topn, restrict_vocab, indexer)
File "C:\Users200016\AppData\Local\Continuum\anaconda3\lib\site-packages\gensim\models\keyedvectors.py", line 549, in most_similar
for word, weight in positive + negative:
TypeError: cannot unpack non-iterable numpy.float64 object
我该怎么做才能克服这个错误并找到与我的数组最相似的词?
我查看了 and this 页面。但是,我不清楚如何使用这些建议解决我的问题。
您正在尝试查看浮点数是否与字符串相似,但这行不通 (cannot unpack non-iterable numpy.float64 object
)。
您需要做的是正确生成随机字符串,而不是随机浮点数。完成后,您的代码将起作用。另请参阅说明 list of str
(https://radimrehurek.com/gensim/models/keyedvectors.html#gensim.models.keyedvectors.WordEmbeddingsKeyedVectors.most_similar)
的文档
Gensim的KeyedVectors
接口.most_similar()
方法可以将原始向量作为它的目标,但是为了它的当前(至少通过gensim-3.8.3
) argument-type-detection 为了不将单个向量误认为 list-of-keys,您需要将其明确提供为指定 positive
参数的项目列表的一个成员。
具体来说,这应该有效:
similars = word2vec.wv.most_similar(positive=[vector,])
使用 Gensim 包,我在语料库上训练了一个 word2vec 模型,如下所示:
word2vec = Word2Vec(all_words, min_count = 3, size = 512, sg = 1)
使用 Numpy,我已经初始化了一个具有相同维度的随机数组:
vector = (rand(512)-0.5) *20
现在,我想从 word2vec 中找到与我初始化的随机向量最相似的单词。
对于word2vec中的词,可以运行:
word2vec.most_similar('word')
并且输出是一个包含最相似词及其相应距离的列表。
我想为我的初始化数组获得类似的输出。
然而,当我运行:
word2vec.most_similar(vector)
我收到以下错误:
Traceback (most recent call last):
File "<ipython-input-297-3815cf183d05>", line 1, in <module>
word2vec.most_similar(vector)
File "C:\Users200016\AppData\Local\Continuum\anaconda3\lib\site-packages\gensim\utils.py", line 1461, in new_func1
return func(*args, **kwargs)
File "C:\Users200016\AppData\Local\Continuum\anaconda3\lib\site-packages\gensim\models\base_any2vec.py", line 1383, in most_similar
return self.wv.most_similar(positive, negative, topn, restrict_vocab, indexer)
File "C:\Users200016\AppData\Local\Continuum\anaconda3\lib\site-packages\gensim\models\keyedvectors.py", line 549, in most_similar
for word, weight in positive + negative:
TypeError: cannot unpack non-iterable numpy.float64 object
我该怎么做才能克服这个错误并找到与我的数组最相似的词?
我查看了
您正在尝试查看浮点数是否与字符串相似,但这行不通 (cannot unpack non-iterable numpy.float64 object
)。
您需要做的是正确生成随机字符串,而不是随机浮点数。完成后,您的代码将起作用。另请参阅说明 list of str
(https://radimrehurek.com/gensim/models/keyedvectors.html#gensim.models.keyedvectors.WordEmbeddingsKeyedVectors.most_similar)
Gensim的KeyedVectors
接口.most_similar()
方法可以将原始向量作为它的目标,但是为了它的当前(至少通过gensim-3.8.3
) argument-type-detection 为了不将单个向量误认为 list-of-keys,您需要将其明确提供为指定 positive
参数的项目列表的一个成员。
具体来说,这应该有效:
similars = word2vec.wv.most_similar(positive=[vector,])