问题描述
当对word2vec生成的单词嵌入应用scikit learn's多种t-sne实现时,我得到了奇怪的结果。 通常情况下,(国王后)的距离和方向应与(男女)相同,如互联网上的大量例子所述。
我确信我的word2vec模型已正确训练,因为我正在使用Google新闻数据集,而且most_similar(king-man + woman)的查询也会按照预期返回女王。
转换的2d矢量的绘图也正确完成。 因此,它必须与scikit学习的t-sne转换有关。
我正在使用以下python代码进行转换:
vecs = np.concatenate(vecs)
np_vecs = np.array(vecs, dtype='float')
ts = TSNE(2)
reduced_vecs = ts.fit_transform(np_vecs)
我做错了什么或库配置错了?
1楼
我有同样的问题。 正如用户1814735所述,您不能仅仅提供几点并期望获得良好的结果。 用更多的单词喂养有很大帮助。
2楼
我想补充一下iceui2
的答案。
原始是一种非线性维技术,它试图确保邻居之间的距离分布保持在较低和较高维度(高维的邻居将是较低维度的邻居)。
但是,你的方向很可能会被扭曲,因为过去常见的点的歧管已经发生了巨大的变化。
为了保留方向,我建议使用PCA进行降维,然后绘图。