据我所知,tsne是用于降低单词向量维度的。 Word2vec通过大量数据生成单词嵌入模型。 两者之间的关系是什么? Word2vec是否在内部使用了tsne? (我使用的是Gensim的Word2vec)
在内部,它们都使用梯度下降来达到其最终优化状态。两者都可以被视为降维操作。但是,word2vec不会在内部使用t-SNE(反之亦然)。“t-SNE”(“t分布随机邻居嵌入”)通常将多维数据缩减为2或3个维度,以便绘制可视化图形。它涉及学习从原始维度到较少维度的映射,仍然使相似点彼此靠近。word2vec获取许多文本示例,并学习一个浅层神经网络,该网络擅长于从附近的单词中预测单词。该神经网络的特定层的权重表示单个单词,然后成为学习的N维单词向量,N的值通常为100到600。(有一种另外创建单词向量的方法称为GLoVE,它的工作方式类似于t-SNE,因为它直接从单词的高维共现矩阵进行训练,而不是从许多上下文共现示例进行训练。但它仍然不是t-SNE本身。)您可能会针对100-400的目标维度运行t-SNE。但是,由于这种结果还不能产生漂亮的图形,因此t-SNE的“邻近性”维护并没有产生其通常预期的好处。您可能会学习仅具有2或3个维度的word2vec(或GLoVE)向量,但是人们从单词向量中寻求的大多数有用的相似性/排列将在拥挤中丢失。在绘图中,您可能不会看到相关单词类别的强烈视觉“聚集”,因为t-SNE的特定高到低维度邻近性保持目标未被应用。
Word2vec
(大小为300,表示维度为300)并通过t-SNE
减少其整个训练词向量的维数后,我能否可视化Word2vec
的结果? - user3595632Word2Vec
模型中获取整个训练向量呢?我在Gensim
教程网站(https://radimrehurek.com/gensim/models/word2vec.html)上查找了这个问题,但我认为在训练后没有获取整个向量的API。T_T - user3595632model.wv.index2word
中有每个已知单词的列表。您可以使用model.wv[word]
获取每个向量。这些向量都在numpy数组model.wv.syn0
中,顺序与index2word
相同。为了真正理解可能性,并且由于这是Python /开源,整个模型都是可访问和可变的,最好的参考是源代码本身:https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py - gojomo