首先进行jieba分词,去除停用词;然后通过正则表达式去除无关字符,构建词向量;最后提取小说的所有人名并画图展示出来。

import jieba

import re

from gensim.models import Word2Vec

#读取数据

file = open(r'笑傲江湖.txt',encoding = 'utf-8')

text = file.readlines()

file.close()

#将换行符等特殊字符替换掉

text1 = text[1:] #第一行是这本小说的作者信息

text2 = [re.sub('\u3000| |\n','',i) for i in text1]

#分词,去除停用词

with open(r'停用词.txt','r',encoding = 'utf-8') as f:

stop_words = f.reanlines()

text_cut = [jieba.lcut(i) for i in text2]

stop_words = [re.sub(' |\n','',i) for i in stop_words]

text_ = [[i for i in word if i not in stop_words] for word in text_cut]

#构建词向量

my_wv = WordVec(text_,size = 200,min_counts = 5,window = 2,iter = 100)

#查看词向量

name = '令狐冲'

print(my_wv[name])

print(my_wv.similar_by_word(name,topn=3)) #查看跟'令狐冲'相关性前三的词

#查看跟令狐冲关系相当于师妹跟林平之的关系的词

my_wv.most_similar(['师妹','林平之'],[name],topn=3)

#查看跟令狐冲关系相当于师妹跟圣姑的关系的词

my_wv.most_similar(['师妹','圣姑'],[name],topn=3)

#查看跟令狐冲关系相当于师妹跟林平之的关系的词

import jieba.posseg as poss

#分词后对词的属性进行分析

a = poss.lcut('林平之是谁')

print(a)

print([list(i)[0] for i in a if list(i)[1] == 'nr'])

print(list(a[0])[1] == 'nr')

print(list(a[0])[0])

#提取这本小说里的所有人名

temp = [poss.lcut(i) for i in text2]

people = [[i.word for i in x if i.flag =='nr'] for x in temp]

temp2 = [' '.join(x) for x in people]

people2 = list(set(' '.join(temp2).split()))

data = []

newpeo = []

for i in people2:

try:

data.append(my_wv.wv[i])

newpeo.append(i)

except KeyError:

pass

#PCA降维后画图

from sklearn.decomposition import PCA

data2 = PCA(n_components=2).fit_transform(data)

print(len(data))

print(data2.shape)#(514,2)

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'

plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(15,15),dpi=360)

for i in range(len(data2)):

plt.scatter(data2[i,0],data2[i,1])

plt.text(data2[i,0],data2[i,1],newpeo[i])

plt.savefig('foo.png') #保存到本地

plt.show()

如果plt.show()显示的是空白的图的话就先将图片保存到本地,然后在打开图片查看即可。

中间那一堆密密麻麻的应该是跑龙套的演员,放大一部分查看。

python笑傲江湖_python构建词向量分析《笑傲江湖》人物之间的关系相关推荐

  1. 使用Python探索四大名著【红楼梦】人物之间的关系,简直帅呆了

    嗨,大哥们,我来了! <红楼梦>作为我国四大名著之一,古典小说的巅峰之作,粉丝量极其庞大,而红学也经久不衰.所以我们今天通过 Python 来捋一下红楼梦里那错综复杂的人物关系,话不多说, ...

  2. Python探索四大名著【红楼梦】人物之间的关系,红学家十级

    嗨害大家好鸭!我是小熊猫

  3. 内存(Display)、显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存。请用Python语言简要实现这些类及它们之间的关系。

    内存(Display).显示器(Monitor)和计算机(Computer)均属于一种产品(Product),其中计算机需要显示器和内存.请用Python语言简要实现这些类及它们之间的关系. clas ...

  4. 词向量python训练_python gensim 词向量训练笔记

    记录词向量训练过程,备忘(系统ubuntu16.python2.7) 涵盖内容:python rar解压.大文件分解.HDF5文件操作.文本预处理(文本编码.分词处理).多进程.gensim操作. 1 ...

  5. Python学习,类空间问题及类之间的关系

    一. 类的空间问题** 1.1 何处可以添加对象属性 class A:def __init__(self,name):self.name = namedef func(self,sex):self.s ...

  6. Python实现node2vec构建词向量

    一.node2vec原理 node2vec是由Perozzi 等学者提出的将 word2vec 的思想用于图节点表示学习的一种Deepwalk 算法, 该算法在Deepwalk的基础上改变了随机游走的 ...

  7. 永恒python图片_python 数据词云展示实例(3)- 背景图设置

    记录wordcloud库背景图的设置及样板 之前介绍了wordcloud的基本使用wordcloud的基本使用,本文记录一下如何设置背景图. 样图 背景图 tim.jpg 生成样图 dream.png ...

  8. python中True,False与0,1之间的关系

    demo1 >>> print(True == 1) >>> print(True == 2) >>> print(False == 0) > ...

  9. Neo4j 之西游记取经团队人物创建和关系设置

    以西游记小说为为例子 创建 创建带属性的人物节点 创建取经团队的人物,包含名称和年龄属性 CREATE (xyj_tsz:X_Person{name:"唐三藏",age:39}) ...

最新文章

  1. 转:iPhone之后,思考下一个科技突破
  2. 5771. 【NOIP2008模拟】遨游
  3. H264编码之GOP含义
  4. AndroidStudio快速生成JNI头文件
  5. C#开源项目:SiMay远程控制管理系统
  6. 如何用 Blazor 实现 Ant Design 组件库(二)
  7. SVN之如何解决从一个svn路径下载项目快速提交到其它svn路径
  8. MySQL笔记-centos7安装MySQL5.7.25(glibc版)
  9. kafka发送mysql数据丢失_Kafka 如果丢了消息,怎么处理的?
  10. 在Linux虚拟机终端切换普通用户身份和root身份
  11. ubuntu linux拼音输入法,Ubuntu 中文拼音输入法小结
  12. 动态规划算法典型应用之背包问题
  13. Make Cents? Gym - 101350M (水)
  14. hiveSQL的小数取整
  15. 基于android的互动健身平台,基于Android的健身助手APP设计与实现
  16. 比win7运行快的linux发行版,旧电脑扔了浪费!装SliTaz系统,瞬间运行流畅如新机,比win7更快...
  17. java中byte和short类型的相互转换(不是用隐式转换)
  18. np.meshgrid plt.contourf
  19. X509数字证书学习
  20. 《SDD-CNN: Small Data-Driven Convolution Neural》--翻译笔记

热门文章

  1. C2科一考试道路交通安全违法处罚
  2. 分享几个发外链的地方
  3. Censor(KMP)
  4. emcc oracle,Oracle 19C+13.4EMCC部署和配置
  5. Vue - 允许浏览器进行debugger调试
  6. ansys里面自带chemkin_ANSYS CHEMKIN-PRO复杂化学反应快速仿真_流体仿真_工业仿真_产品体系_安世亚太...
  7. php macaw路由没进入路由5入口,教你利用composer实现路由加载
  8. swagger2 介绍+注解说明
  9. 油气大数据平台建设案例分享,让油田数据同步效率提升20%的解决方案
  10. 瑞芯微-RV1109主板各参数介绍