gpt4 book ai didi

python - Word2Vec 给出的单词相似度图

转载 作者:行者123 更新时间:2023-12-01 03:42:49 26 4
gpt4 key购买 nike

我想在一个简单的向量空间图中绘制不同单词之间的相似度。我已经使用 gensim 给出的模型 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)

在一个简单的向量空间图中,我想放置以下单词:银行、金融、市场、属性(property)、石油、能源、商业和经济。我可以使用以下函数轻松计算这些单词对的相似度:

model.similarity('bank', 'property')
0.25089364531360675

非常感谢

最佳答案

为了绘制 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)

这将为您提供一个二维相似性矩阵,您可以通过 pandas 进一步解析该矩阵,然后使用 seaborn 和 matplotlib 的 pyplot 函数进行绘图。

关于python - Word2Vec 给出的单词相似度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39296592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com