词向量技术是将词语转化成为稠密向量。在自然语言处理应用中,词向量作为机器学习、深度学习模型的特征进行输入。因此,最终模型的效果很大程度上取决于词向量的效果。

Word2vec 是 Google 在 2013 年开源的一款将词表征为实数值向量的高效工具,利用深度学习思想,通过训练,把对文本内容的处理简化为 K 维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。

word2vec输出的词向量可以被用来做很多 NLP 相关的工作,比如聚类、找同义词、词性分析等等。如果换个思路,把词当做特征,那么Word2vec就可以把特征映射到 K 维向量空间,可以为文本数据寻求更加深层次的特征表示。 Word2vec 使用的是 Distributed representation 的词向量表示方式。采用一个三层的神经网络“输入层-隐层-输出层”。有个核心的技术是根据词频用Huffman编码,使得所有词频相似的词隐藏层激活的内容基本一致,出现频率越高的词语,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度。

简单的理论大概就是上面这些,我比较喜欢《天龙八部》这部小说,“有情皆孽,无人不冤”是这部小说的主旨,人物丰富,情节紧凑,每个人都演绎了“求不得”这出自佛经的三个字。下面我们通过代码分析一下实际是不是这样?

  • 第一步:我们找到《天龙八部》这部小说的txt文件,去掉停用词,然后利用结巴分词整理成能够被Word2vec使用的格式。

整理完的文本,整部小说的第一节标题:第01章 青衫磊落险峰行  如下:

[' ', '青衫', '磊落', '险峰', '行']
  • 第二步:我们先结合词云工具画出小说中出现次数最多的四字成语

貌似不是我们一开始说的那样求不得,看起来整部小说还是非常豪放,充满了江湖的侠义之气,不是我们最初预料的那种悲苦的基调。

  • 第三步:利用Word2vec分析这部小说的人物

1.和段誉最相关的词

[('木婉清', 0.9940025806427002), ('低声', 0.9905248284339905),
('王语嫣', 0.9902623891830444), ('虚竹', 0.9894589781761169),
('萧峰', 0.9883322715759277),('阿紫', 0.9870333075523376),('阿朱', 0.9851636290550232), ('快', 0.9846230745315552),('点头', 0.983921468257904), ('笑', 0.9805305600166321)]

除了这几个人物之外,这位公子哥给人的感觉也是温柔多情,“低声”,“点头”,“笑”这三个词语算是有点贴切了,而“快”字说的就是他的凌波微步了。

2.判断段誉和王语嫣的相似度

#判断相似度
model.similarity('段誉', '王语嫣')0.9902624294045532

看结果说明他们的关系还是非常强的

3.找出与萧峰最接近,与王语嫣最不相近的词

print(model.most_similar(positive=['萧峰'], negative=['王语嫣']))[('中', 0.6243330836296082), ('内力', 0.5441182851791382),('出', 0.5018132328987122), ('间', 0.4797748029232025),
('嗤', 0.46751290559768677), ('派', 0.4565170407295227),
('突然', 0.4523952603340149), ('武功', 0.448074609041214),('签条', 0.4459651708602905), ('少林', 0.4459308385848999)]

4.找出指定长度的相关词

#找出指定长度的相关词
req_count = 20
for key in model.similar_by_word('李秋水'):if  len(key[0]) <= 4:req_count -= 1print(key[0],key[1])if req_count == 0:break连声 0.9998010396957397
一点 0.9997679591178894
出尘子 0.999755322933197
跪倒 0.9997552633285522
怒气 0.9997398853302002
摘星子 0.9997320771217346
大怒 0.9997137188911438
头 0.9997084140777588
长 0.9996963739395142
冷 0.9996923804283142

结果还是比较准的

详细代码如下:

import jieba#加载文本,去除空格
def read_words(path):lines = []with open (path,'r') as f:for line in f:line = line.strip()if len(line) != 0:lines.append(line)return lines#加载停用词列表
def stop_words(path):with open (path,'r',encoding='utf-8') as f:return [line.strip() for line in f]jieba.suggest_freq('段誉',True)
jieba.suggest_freq('萧峰',True)
jieba.suggest_freq('阿紫',True)
jieba.suggest_freq('乔峰',True)#jieba.load_userdict('name.txt')#分词
def cut_words(ready_words):sentences = [jieba.lcut(line) for line in ready_words]sens = []for sentence in sentences:sen = []for word in sentence:if word not in stop_words:sen.append(word)sens.append(sen)return sensready_words = read_words('天龙八部.txt')
stop_words = stop_words('stop_words.utf8')
token = cut_words(ready_words)#检验结果
token[0]#将分词结果变成一个列表
c=[]
for sentence in token:for word in sentence:c.append(word)#直接调用统计词频的函数
# from collections import Counter
# top5= Counter(c).most_common(29)
# print(top5)#统计四字词语
dic_tf = {}
for w in c:if  len(w) == 4 and w not in ['耶律洪基','慕容公子','神仙姊姊','慕容先生','不平道人','天山童姥','智光大师','玄苦大师','太皇太后','小无相功']:dic_tf[w] = dic_tf.get(w,0) + 1
print(sorted(dic_tf.items(),key=lambda x:x[1],reverse=True)[:20])dic_tf#生成词云图
from wordcloud import WordCloud
wc = WordCloud(font_path = 'simhei.ttf',background_color="black",  # 背景颜色max_words=20 # 词云显示的最大词数)wc.fit_words(dic_tf)import matplotlib.pyplot as plt
plt.figure()
plt.imshow(wc)
plt.axis("off")
plt.show()#模型训练
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"from gensim.models import Word2Vec
model = Word2Vec(token)model.save('model')  #保存模型
model = Word2Vec.load('model')   #加载模型#判断与段誉相近的词
print(model.most_similar('段誉'))
#判断相似度
model.similarity('段誉', '王语嫣')
#判断与萧峰相近,与王语嫣不相近的词
print(model.most_similar(positive=['萧峰'], negative=['王语嫣']))
#找出指定长度的相关词
req_count = 20
for key in model.similar_by_word('李秋水'):if  len(key[0]) <= 4:req_count -= 1print(key[0],key[1])if req_count == 0:break

Word2vec词向量工具带你发现不一样的《天龙八部》相关推荐

  1. word2vec词向量训练及中文文本类似度计算

    本文是讲述怎样使用word2vec的基础教程.文章比較基础,希望对你有所帮助! 官网C语言下载地址:http://word2vec.googlecode.com/svn/trunk/ 官网Python ...

  2. word2vec实例详解python_在python下实现word2vec词向量训练与加载实例

    项目中要对短文本进行相似度估计,word2vec是一个很火的工具.本文就word2vec的训练以及加载进行了总结. word2vec的原理就不描述了,word2vec词向量工具是由google开发的, ...

  3. 词向量工具——word2vec

    # 词向量 > 词向量(word embedding)是为了让计算机能够处理的一种词的表示. 自然语言处理(NLP)相关任务中,要将自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化, ...

  4. 在Keras的Embedding层中使用预训练的word2vec词向量

    文章目录 1 准备工作 1.1 什么是词向量? 1.2 获取词向量 2 转化词向量为keras所需格式 2.1 获取所有词语word和词向量 2.2 构造"词语-词向量"字典 2. ...

  5. GENSIM官方教程(4.0.0beta最新版)-Word2Vec词向量模型

    GENSIM官方教程(4.0.0beta最新版)-词向量模型 译文目录 回顾:词袋模型 简介:词向量模型 词向量模型训练实例 训练一个你自己的模型 储存和加载模型 训练参数 内存相关的细节 模型评估 ...

  6. 【NLP】维基百科中文数据训练word2vec词向量模型——基于gensim库

    前言   本篇主要是基于gensim 库中的 Word2Vec 模型,使用维基百科中文数据训练word2vec 词向量模型,大体步骤如下: 数据预处理 模型的训练 模型的测试 准备条件: Window ...

  7. 【python gensim使用】word2vec词向量处理中文语料

    word2vec介绍 word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间 ...

  8. NLP—word2vec词向量简介

    NLP处理的数据都是文字,而文字是无法直接被计算机计算的,于是人们想出了使用独热编码的方式来表示单词. <span style="font-size:16px;">浙江 ...

  9. 深度学习(四十二)word2vec词向量学习笔记

    word2vec词向量学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/51564783 个人微博:黄锦池-hjimce 一.使用原版word ...

最新文章

  1. vs code vue模板创建
  2. java流类图结构_java I/O 流总结
  3. 从一线撤回二三线城市的程序员们,最后都怎么样了?
  4. git 拉取远端仓库_git 从远程仓库拉取代码
  5. 关于WinForms的跨显示器DPI自适应
  6. iPhone 11跌至4439元?网友:虽是二手但用着很香
  7. delphi 第三方组件 log4cpp.dll
  8. python迭代器是什么意思_python 迭代器(第二次总结)
  9. 多源最短路径---Floyd-Warshall算法
  10. 耳挂式蓝牙耳机原理_蓝牙真无线耳机MP3功能二合一 wedoking W-607耳机评测
  11. 在资本寒冬下,程序员为何也能迅速找到好工作
  12. python aes加密对于长字符数据丢失_Python 3中AES加密和解密的字符串字节数
  13. onclick控制元素显示与隐藏时,点击第一次无反应的原因
  14. 软考论文写作方法及规范
  15. ESD介绍及TVS的原理和应用
  16. 4个公认高用的OCR文字识别网站,免费高效率!
  17. 关于2440嵌入式MPlayer播放器的移植方法
  18. 塑胶卡扣弹性计算公式_详细讲解塑胶卡扣结构设计要点.ppt
  19. 操作系统——(9)磁盘存储器的管理
  20. ASCII码_字符与数字转换等问题

热门文章

  1. 编写代码实现对多边形图案填充
  2. HTC-quietly brilliant(谦和卓越)
  3. 【ubuntu】Ubuntu 各版本代号简介
  4. 2021高考成绩等位线查询四川,泸州医学院的麻醉专业收分请问下四川考生一 – 手机爱问...
  5. 如何使用《背景音乐提取器》提取歌曲中的背景音乐
  6. 入门级风帆行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. 连续被爆押金退款难  共享汽车会否走向和共享单车一样的宿命?
  8. 一点英语不会可以学java吗_不会英语能学编程吗 编程好不好学
  9. 程序员学英语 英语语法框架 10种词性 9种成分 8种句型
  10. 应用SuperIO(SIO)和开源跨平台物联网框架ServerSuperIO(SSIO)构建系统的整体方案