我想在简单的向量空间图中绘制不同单词之间的相似性。我使用gensim给出的模型self.tableView.registerClass(Cell.self as AnyClass, forCellReuseIdentifier: "cell")
来计算它们,但我在文献中找不到任何图形示例。我的代码如下:
word2vec
在一个简单的向量空间图中,我想提出以下词语:银行,金融,市场,财产,石油,能源,商业和经济。我可以很容易地用函数计算这些单词对的相似度:
## 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)
非常感谢
答案 0 :(得分:2)
为了绘制Word2Vec模型中的所有单词向量,您需要执行降维。您可以使用python的sklearn中的TSNE工具来可视化二维空间中的多维向量。
t-distributed Stochastic Neighbor Embedding
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)
这将为您提供一个二维相似矩阵,您可以进一步解析大熊猫,然后使用seaborn和matplotlib的pyplot函数进行绘图。