我有一个使用Python的Gensim库的经过训练的Word2vec模型。我有一个标记列表如下。人声大小是34,但我只给出了34中的几个:
b = ['let',
'know',
'buy',
'someth',
'featur',
'mashabl',
'might',
'earn',
'affili',
'commiss',
'fifti',
'year',
'ago',
'graduat',
'21yearold',
'dustin',
'hoffman',
'pull',
'asid',
'given',
'one',
'piec',
'unsolicit',
'advic',
'percent',
'buy']
型号
model = gensim.models.Word2Vec(b,min_count=1,size=32)
print(model)
### prints: Word2Vec(vocab=34, size=32, alpha=0.025) ####
如果我试图通过对列表中的一个单词进行model['buy']
来获得相似度分数,我将得到
KeyError: "word 'buy' not in vocabulary"
你们能告诉我我做错了什么吗?有什么方法可以检查这个模型,它可以进一步用于训练主成分分析或t-sne,以便将类似的单词可视化,形成一个主题?谢谢您。
传递给
gensim.models.Word2Vec
的第一个参数是一个iterable语句。句子本身就是一个单词表。从文档中:现在,它认为列表中的每个单词都是一个句子,因此它对每个单词中的每个字符都执行
Word2Vec
,而不是对列表中的每个单词执行b
。现在你可以:要使它对单词起作用,只需将
b
包装在另一个列表中,以便正确解释它:从文档中,您需要传递可iterable语句,因此无论您传递给函数的是什么,它都将输入视为可iterable,因此这里您只传递单词,因此它计算整个语料库中每个字符的word2vec向量。
所以为了避免这个问题,在列表中传递单词列表。
相关问题 更多 >
编程相关推荐