[PYTHON-TSNE]可视化Word Vector
需要的几个文件:
1.wordList.txt,即你要转化成vector的word list:
spring
maven
junit
ant
swing
xml
jre
jdk
jbutton
jpanel
swt
japplet
jdialog
jcheckbox
jlabel
jmenu
slf4j
test
unit
2.label.txt, 即图中显示的label,可以与wordlist.txt中的word不同。
spring
maven
junit
ant
swing
xml
jre
jdk
jbutton
jpanel
swt
japplet
jdialog
jcheckbox
jlabel
jmenu
slf4j
test
unit
3.model,用gensim生成的word2vec model;
4.运行buildWordVectorFromW2V.py,用于生成wordvectorlist:
from gensim.models.word2vec import Word2Vec
from pathutil import get_base_path modelpath = 'XXX/model' model = Word2Vec.load(modelpath)
sentenceFilePath = 'wordList.txt'
vectorFilePath = 'word2vec.txt' sentence = []
writeStr = ''
with open(sentenceFilePath, 'r') as f:
for line in f:
sentWordList = line.strip().split(' ')
for word in sentWordList:
if word not in model:
print 'error!'
vec = model[word]
for vecTmp in vec:
writeStr += (str(vecTmp) + ' ')
writeStr += '\n' f = open(vectorFilePath, "w")
f.write(writeStr.strip())
5.运行visualization.py,用于生成图片:
import numpy as np
from gensim.models.word2vec import Word2Vec
import matplotlib.pyplot as plt
from pathutil import get_base_path modelpath = 'XXX/model'
model = Word2Vec.load(modelpath)
sentenceFilePath = 'wordlist.txt'
labelFilePath = 'wordlist.txt' visualizeVecs = []
with open(sentenceFilePath, 'r') as f:
for line in f:
word = line.strip()
vec = model[word.lower()]
visualizeVecs.append(vec) visualizeWords = []
with open(labelFilePath, 'r') as f:
for line in f:
word = line.strip()
visualizeWords.append(word.lower()) visualizeVecs = np.array(visualizeVecs).astype(np.float64)
# Y = tsne(visualizeVecs, 2, 200, 20.0);
# # Plot.scatter(Y[:,0], Y[:,1], 20,labels);
# # ChineseFont1 = FontProperties('SimHei')
# for i in xrange(len(visualizeWords)):
# # if i<len(visualizeWords)/2:
# # color='green'
# # else:
# # color='red'
# color = 'red'
# plt.text(Y[i, 0], Y[i, 1], visualizeWords[i],bbox=dict(facecolor=color, alpha=0.1))
# plt.xlim((np.min(Y[:, 0]), np.max(Y[:, 0])))
# plt.ylim((np.min(Y[:, 1]), np.max(Y[:, 1])))
# plt.show() # vis_norm = np.sqrt(np.sum(temp**2, axis=1, keepdims=True))
# temp = temp / vis_norm
temp = (visualizeVecs - np.mean(visualizeVecs, axis=0))
covariance = 1.0 / visualizeVecs.shape[0] * temp.T.dot(temp)
U, S, V = np.linalg.svd(covariance)
coord = temp.dot(U[:, 0:2])
for i in xrange(len(visualizeWords)):
print i
print coord[i, 0]
print coord[i, 1]
color = 'red'
plt.text(coord[i, 0], coord[i, 1], visualizeWords[i], bbox=dict(facecolor=color, alpha=0.1),
fontsize=22) # fontproperties = ChineseFont1
plt.xlim((np.min(coord[:, 0]), np.max(coord[:, 0])))
plt.ylim((np.min(coord[:, 1]), np.max(coord[:, 1])))
plt.show()
运行结果:

[PYTHON-TSNE]可视化Word Vector的更多相关文章
- Python数据可视化——使用Matplotlib创建散点图
Python数据可视化——使用Matplotlib创建散点图 2017-12-27 作者:淡水化合物 Matplotlib简述: Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D ...
- Python数据可视化-seaborn库之countplot
在Python数据可视化中,seaborn较好的提供了图形的一些可视化功效. seaborn官方文档见链接:http://seaborn.pydata.org/api.html countplot是s ...
- Python数据可视化 -- Wordcloud
Python数据可视化 -- Wordcloud 安装 启动命令行,输入:pip install wordcloud word cloud 库介绍 及简单使用 wordcloud库,可以说是pytho ...
- Python数据可视化编程实战——导入数据
1.从csv文件导入数据 原理:with语句打开文件并绑定到对象f.不必担心在操作完资源后去关闭数据文件,with的上下文管理器会帮助处理.然后,csv.reader()方法返回reader对象,通过 ...
- python如何转换word格式、读取word内容、转成html
# python如何转换word格式.读取word内容.转成html? import docx from win32com import client as wc # 首先将doc转换成docx wo ...
- 【转】Python——plot可视化数据,作业8
Python——plot可视化数据,作业8(python programming) subject1k和subject1v的形状相同 # -*- coding: utf-8 -*- import sc ...
- Python数据可视化编程实战pdf
Python数据可视化编程实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1vAvKwCry4P4QeofW-RqZ_A 提取码:9pcd 复制这段内容后打开百度 ...
- [Python] Python 学习 - 可视化数据操作(一)
Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文 ...
- 【数据科学】Python数据可视化概述
注:很早之前就打算专门写一篇与Python数据可视化相关的博客,对一些基本概念和常用技巧做一个小结.今天终于有时间来完成这个计划了! 0. Python中常用的可视化工具 Python在数据科学中的地 ...
随机推荐
- android:制作 Nine-Patch 图片
它是一种被特殊处理过的 png 图片,能够指定哪些区域可以被拉伸而 哪些区域不可以. 那么 Nine-Patch 图片到底有什么实际作用呢?我们还是通过一个例子来看一下吧.比如 说项目中有一张气泡样式 ...
- 本地项目文件夹同步到GitLab的操作步骤
一.需求 本地有一个微信小程序的项目源码,只是文件夹的形式,包括一些js和一些页面,想把这个文件夹用GitLab管理,于是就需要把本地文件夹push到服务器的GitLab上面 二.操作 2.1:本地文 ...
- 【SQL 代码】SQL复制数据表及表结构
select * into 目标表名 from 源表名 from 源表名 以上两句都是将'源表'的数据插入到'目标表',但两句又有区别的: 第一句(select into from)要求目标表不存在, ...
- 你应该更新的 Java 知识之常用程序库【转载】
在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进.如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东 ...
- ionic 布局
1. row col 设置自动换行 <!--长文本换行 item-text-wrap--> <li class="item item-text-wrap" ng- ...
- Android 利用二次贝塞尔曲线模仿购物车加入物品抛物线动画
Android 利用二次贝塞尔曲线模仿购物车加入物品抛物线动画 0.首先.先给出一张效果gif图. 1.贝塞尔曲线原理及相关公式參考:http://www.jianshu.com/p/c0d7ad79 ...
- Java实现 SSL双向认证
我们常见的SSL验证较多的只是验证我们的服务器是否是真实正确的,当然如果你访问的URL压根就错了,那谁也没有办法.这个就是所谓的SSL单向认证. 但是实际中,我们有可能还会验证客户端是否符合要求,也就 ...
- FeignClient使用
在使用Spring Cloud开发微服务应用时中,各个微服务服务提供者都是以HTTP接口的形式对外提供服务,因此服务消费者在调用服务提供者时,通过HTTP Client的方式访问.当然我们可以使用JD ...
- Python反射机制理解
Python反射机制用沛齐老师总结的话说就是:利用字符串的形式去对象(模块)中操作(寻找)成员. getattr(object, name) object代表模块,name代表模块中的属性或成员,该函 ...
- 【iCore1S 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
实验原理: 按键的一端与STM32的GPIO(PB9)相连,且PB9外接一个1k大小的限流上接电阻. 初始化时把PB9设置成输入模式,当按键弹起时,PB9由于上拉电阻的作用呈高电平(3.3V): 当按 ...