首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Word2Vec给出的单词相似度的图形化绘图

Word2Vec给出的单词相似度的图形化绘图
EN

Stack Overflow用户
提问于 2016-09-03 00:02:43
回答 1查看 3.4K关注 0票数 1

我想在一个简单的向量空间图中画出不同单词之间的相似性。我已经使用gensim提供的模型word2vec计算了它们,但我在文献中找不到任何图形示例。我的代码如下:

代码语言:javascript
复制
## Libraries to download
from nltk.tokenize import RegexpTokenizer
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
from gensim import corpora, models
import gensim

import json
import nltk
import re
import pandas


appended_data = []


#for i in range(20014,2016):
#    df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
#    appended_data.append(df0)

for i in range(2005,2016):
    if i > 2013:
        df0 = pandas.DataFrame([json.loads(l) for l in open('SDM_%d.json' % i)])
        appended_data.append(df0)
    df1 = pandas.DataFrame([json.loads(l) for l in open('Scot_%d.json' % i)])
    df2 = pandas.DataFrame([json.loads(l) for l in open('APJ_%d.json' % i)])
    df3 = pandas.DataFrame([json.loads(l) for l in open('TH500_%d.json' % i)])
    df4 = pandas.DataFrame([json.loads(l) for l in open('DRSM_%d.json' % i)])
    appended_data.append(df1)
    appended_data.append(df2)
    appended_data.append(df3)
    appended_data.append(df4)


appended_data = pandas.concat(appended_data)
# doc_set = df1.body

doc_set = appended_data.body

## Building the deep learning model
import itertools

sent_detector = nltk.data.load('tokenizers/punkt/english.pickle')
sentenized = doc_set.apply(sent_detector.tokenize)
sentences = itertools.chain.from_iterable(sentenized.tolist()) # just to flatten

from gensim.models import word2vec


result = []
for sent in sentences:
    result += [nltk.word_tokenize(sent)]

model = gensim.models.Word2Vec(result)

在一个简单的向量空间图中,我想放置以下单词:银行,金融,市场,房地产,石油,能源,商业和经济。我可以很容易地用以下函数计算这些单词对的相似度:

代码语言:javascript
复制
model.similarity('bank', 'property')
0.25089364531360675

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-22 19:11:00

要绘制Word2Vec模型中的所有单词向量,需要执行降维。您可以使用python的sklearn中的TSNE工具来可视化2-D空间中的多维向量。

t-distributed Stochastic Neighbor Embedding

代码语言:javascript
复制
import sklearn.manifold.TSNE

tsne = sklearn.manifold.TSNE(n_components = 0 , random_state = 0)
all_vector_matrix = model.syn0
all_vector_matrix_2d = tsne.fit_transform(all_vector_matrix)

这将为您提供一个2-D相似度矩阵,您可以进一步解析pandas,然后使用seaborn和matplotlib的pyplot函数进行绘图。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39296592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档