word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的距离。它将term转换成向量形式,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。

需要注意的是,word2vec计算的是余弦值,距离范围为0-1之间,值越大代表两个词关联度越高。

下面通过一个完整的实例来看看word2vec是如何使用的。

一、jieba分词

由于是对中文语料进行处理,所以要先对中文语料进行分词。

from gensim.corpora import Dictionary
import jieba
import pandas as pd
import os
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import PIL.Image as image
from imageio import imread# 创建输出结果目录
output_dir = u'output_word2vec'
if not os.path.exists(output_dir):os.mkdir(output_dir) """
通过jieba进行分词并保存分词后的结果。
步骤如下:
1.导入txt
2.去掉所有的标点符号换行符以及停用词
3.load特定的词库
4.分词
5.保存分词结果
"""# 导入txt并去掉多余的换行和空格
sao = open('sao_dg.txt',encoding='utf-8').read().replace('\n','').replace(' ','')# 导入停用词库
stopwords = pd.read_table('stop_words.txt',names=['words'],encoding='utf-8')
# stopwords.head()# 导入特定的词库
jieba.load_userdict('刀剑词库.txt')# 分词
new_sao = [word for word in jieba.lcut(sao) if word not in list(stopwords['words'])]
# new_sao# 分词结果保存为seg_sao.txt
seg_word_file = os.path.join(output_dir, 'seg_sao.txt')
with open(seg_word_file, 'wb') as outfile:for words in new_sao:outfile.write(u''.join(words).encode('utf-8') + b'\n')
print (u'分词结果路径:{}'.format(seg_word_file))


二、wordcloud词云图

对txt文件分词完后,可以通过wordcloud绘制词云看看有哪几个词出现的频率最高

import numpy as np
from PIL import Imagesentence = open(r'output_word2vec\seg_sao.txt',encoding='utf-8').read().replace('\n',' ')#获取词云轮廓形状图
shape_image=np.array(Image.open('tr_outline.jpg'))
#生成词云图,此处默认为随机染色,当文本数量较少(看处理效果)时,将repeat设置为True
word_cloud=WordCloud(background_color='white',font_path='msyh.ttc', mask=shape_image,min_font_size=1)
word_cloud.generate(sentence)
word_cloud.to_file('sao_wc.png')

效果如图:

由于我所使用的停用词库并不是很完整,所以wordcloud中还是会看到一些停用词。


三、word2vec参数详解以及训练和使用

使用Gensim训练word2vec相对来说十分方便,也非常简单。
具体步骤大致分三步:
1.通过LineSentence将分词后的预料转换成一个迭代器
2.用Word2Vec训练模型
3.保存模型
4.使用模型

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence # 创建一个句子迭代器,一行为一个句子,词和词之间用空格分开
# 这里我们把一篇文章当作一个句子
sentences = LineSentence(seg_word_file) # 训练模型
model = Word2Vec(sentences=sentences, size=100, iter=10, min_count=20)# 保存模型
model_file = os.path.join(output_dir, 'model.w2v')
model.save(model_file)

在这里需要注意下Word2Vec的一些参数设置

语法:

 Word2Vec(sentences=None, corpus_file=None, size=100, alpha=0.025,window=5, min_count=5, max_vocab_size=None, sample=0.001,seed=1, workers=3, min_alpha=0.0001, sg=0, hs=0, negative=5,ns_exponent=0.75, cbow_mean=1, hashfxn=<built-in function hash>,iter=5, null_word=0, trim_rule=None, sorted_vocab=1, batch_words=10000,compute_loss=False, callbacks=(), max_final_vocab=None)

参数:

  • size:
    是指特征向量的维度,默认为100。

  • alpha:
    是初始的学习速率,在训练过程中会线性地递减到min_alpha。

  • window:
    窗口大小,表示当前词与预测词在一个句子中的最大距离是多少。

  • min_count:
    可以对字典做截断. 词频少于min_count次数的单词会被丢弃掉, 默认值为5。

  • max_vocab_size:
    设置词向量构建期间的RAM限制,设置成None则没有限制。

  • sample:
    高频词汇的随机降采样的配置阈值,默认为1e-3,范围是(0,1e-5)。

  • seed:
    用于随机数发生器。与初始化词向量有关。

  • workers:
    用于控制训练的并行数。

  • min_alpha:
    学习率的最小值。

  • sg:
    用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。

  • hs:
    如果为1则会采用hierarchica·softmax技巧。如果设置为0(默认),则使用negative sampling。

  • negative:
    如果>0,则会采用negativesampling,用于设置多少个noise words(一般是5-20)。

  • cbow_mean:
    如果为0,则采用上下文词向量的和,如果为1(default)则采用均值,只有使用CBOW的时候才起作用。

  • hashfxn:
    hash函数来初始化权重,默认使用python的hash函数。

  • iter:
    迭代次数,默认为5。

  • trim_rule:
    用于设置词汇表的整理规则,指定那些单词要留下,哪些要被删除。可以设置为None(min_count会被使用)。

  • sorted_vocab:
    如果为1(默认),则在分配word index 的时候会先对单词基于频率降序排序。

  • batch_words:
    每一批的传递给线程的单词的数量,默认为10000。


训练好模型后,就可以使用该模型了

# 导入模型
model_sao = Word2Vec.load(model_file)# 计算两个词的相似度
model_sao.similarity(u'狙击',u'武器')

# 计算与武器最相关的20个词
model.most_similar(u'武器',topn=20)

其实和本人所预想的还是有很大的出入的,但大致的流程还是蛮通俗易懂的。不过该语料也只是该小说的一个小章节,后续会对该实例进行完善和修正的

jieba + wordcloud + word2vec实例相关推荐

  1. jieba+wordcloud 分词+词频可视化 问题总结

    1. 问题总结 1. 1 文件读写统一编码格式 错误案例:读取多个编码格式不同的文件时,使用了统一的解码格式,导致文本乱码或屏蔽实效. 例如:屏蔽词文件"stop_key.txt" ...

  2. 离线轻量级大数据平台Spark之MLib机器学习库Word2Vec实例

    Word2Vecword2vec能将文本中出现的词向量化,可以在捕捉语境信息的同时压缩数据规模.Word2Vec实际上是两种不同的方法:Continuous Bag of Words (CBOW) 和 ...

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

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

  4. 文本分类——常用经典技术解析(jieba,word2vec,样本不平衡问题)

    [课程安利]人工智能课程请往下戳 如果想了解和系统学习更多人工智能.机器学习理论和项目实践,CSDN学院中有一系列精品AI课,分为大课和小课,包含数学基础.Python基础.算法和企业级项目 等,适合 ...

  5. Python3.6+jieba+wordcloud 爬取豆瓣影评生成词云

    在上一篇介绍了如何通过Python爬虫抓取豆瓣电影榜单.Python3.6+Beautiful Soup+csv 爬取豆瓣电影Top250 此篇博客主要抓取豆瓣某个电影的影评,利用jieba分词和wo ...

  6. 使用jieba+wordcloud生成微信好友个性签名词云图

    讲真,词云图是我接触python语言以及大数据的启蒙者,记得很久以前看到网上有个制作qq好友相关信息的词云图,真的是瞬间就惊呆了,兴趣使然,真心爱上了这一块,也没想到从基础学起历经了这么长时间,现在又 ...

  7. Python jieba + wordcloud + matplotlib

    jieba 中文分词第三方库 三种模式 精确模式:把文本精确的切分开,不存在冗余单词 全模式:把文本中所有可能的词语都扫描出来,存在冗余 搜索引擎模式:在精确模式的基础上,对长词再次切分 常用函数 j ...

  8. word2vec实例详解python_Python实现word2Vec model过程解析

    这篇文章主要介绍了Python实现word2Vec model过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import gensim, ...

  9. python删除中文停用词_python词云 wordcloud+jieba生成中文词云图

    简介 Python+jieba+wordcloud+txt+gif生成动态中文词云 本文基于爬虫爬取某微信号三个月的文章为例,展示了生成中文词云的完整过程.本文需要的两个核心Python类库: jie ...

最新文章

  1. GDB 内写脚本调试程序
  2. CONFIGURE RETENTION POLICY
  3. Python 进阶之路 (八) 最用心的推导式详解 (附简单实战及源码)
  4. Linux基础篇_01_计算机概论
  5. 1-5分层API(Layered APIs)
  6. 展望 | 2020年人工智能八大趋势
  7. 昇腾AI处理器软件栈--流程编排器(Matrix)
  8. 2021年最值得推荐的13个提高开发效率工具,程序员必备
  9. ThinkJS入门+实例(实现认证权限等基本功能)
  10. 剑指offer面试题[32]:从1到n整数中1出现的次数
  11. 【原】Eclipse部署Maven web项目到tomcat服务器时,没有将lib下的jar复制过去的解决办法...
  12. 魔兽世界模型浏览器WowModelExplorer演示
  13. 做量化你需要知道的那些术语!(持续更新)
  14. 本人的月末结账步骤备忘
  15. QNX dumper生成的core文件无法拿到堆栈信息
  16. Dell R730服务器inter 500系列网卡与光模块不兼容**
  17. 前端搜索引擎优化SEO优化之Title 和 Meta 标签
  18. android微信怎么建群,微信群空间是什么?如何创建微信群空间?
  19. 急,求一个类似的ppt模板,感谢好人
  20. 通用计算机的雏形是图灵机吗,什么是图灵机和通用计算机

热门文章

  1. Matlab:线条动画
  2. 澳门大学的计算机科学是强科吗,澳门大学计算机专业大学排名
  3. 超详细软件著作权申请——流程篇
  4. 机器人行业需要什么计算机知识,进入机器人行业需要掌握哪些?盘点机器人工程师五大必备技能...
  5. 【CSS】响应式图片
  6. Photoshop CC 2018 One-on-One: Mastery Photoshop CC 2018 One-on-One:精通 Lynda课程中文字幕
  7. 计算机考研856学校,2017年中央民族大学信息工程学院856计算机学科专业综合之数据结构考研题库...
  8. nyoj 779 兰州烧饼
  9. 带你玩转Visual Studio——性能分析与优化
  10. Springboot 系列(十七)迅速使用 Spring Boot Admin 监控你的 Spring Boot 程序