scikit-learn - 如何在从 gensim 创建的 word2vec 上运行 tsne?

标签 scikit-learn gensim word2vec

我想可视化从 gensim 库创建的 word2vec。我试过 sklearn,但似乎我需要安装一个开发者版本才能获得它。我尝试安装开发人员版本,但这在我的机器上不起作用。是否可以修改此代码以可视化 word2vec 模型?

tsne_python

最佳答案

您不需要 scikit-learn 的开发者版本 - 只需 install scikit-learn通常通过 pip 或 conda 的方式。

要访问 word2vec 创建的词向量,只需使用单词词典作为模型的索引:

X = model[model.wv.vocab]

以下是一个简单但完整的代码示例,它加载一些新闻组数据,应用非常基本的数据准备(清理和分解句子),训练 word2vec 模型,使用 t-SNE 降低维度,并可视化输出。

from gensim.models.word2vec import Word2Vec
from sklearn.manifold import TSNE
from sklearn.datasets import fetch_20newsgroups
import re
import matplotlib.pyplot as plt

# download example data ( may take a while)
train = fetch_20newsgroups()

def clean(text):
    """Remove posting header, split by sentences and words, keep only letters"""
    lines = re.split('[?!.:]\s', re.sub('^.*Lines: \d+', '', re.sub('\n', ' ', text)))
    return [re.sub('[^a-zA-Z]', ' ', line).lower().split() for line in lines]

sentences = [line for text in train.data for line in clean(text)]

model = Word2Vec(sentences, workers=4, size=100, min_count=50, window=10, sample=1e-3)

print (model.wv.most_similar('memory'))

X = model.wv[model.wv.vocab]

tsne = TSNE(n_components=2)
X_tsne = tsne.fit_transform(X)

plt.scatter(X_tsne[:, 0], X_tsne[:, 1])
plt.show()

关于scikit-learn - 如何在从 gensim 创建的 word2vec 上运行 tsne?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581010/

相关文章:

python - 为什么 gensim 的 Word2Vec 不能识别 'compute_loss' 关键字?

python - sklearn中roc_auc值有什么区别

python - 如何将最大词汇频率放入doc2vec

python - 我如何判断 Gensim Word2Vec 是否使用 C 编译器?

nlp - 如何在 python-gensim 中使用潜在狄利克雷分配 (LDA) 来抽象二元主题而不是一元主题?

gensim - 如何从 gensim word2vec 获取词汇字数?

gensim - 在 Gensim word2vec 模型中跟踪损失和嵌入

python - 属性错误 : 'GridSearchCV' object has no attribute 'best_estimator_'

python - 为什么这个参数在sklearn的Pipeline中无效?

python - 当重复次数少于 n 次时从 numpy 数组中删除行