前言

word2vec 是静态词向量构建方法的一种,与 Embedding 词向量相似。本文将介绍 word2vec 词向量是如何训练的,训练好的 word2vec 词向量如何使用。由于不同的 gensim 的版本不同,在调用一些函数时会有差异。隐藏本文的 gensim 的版本为 4.2.0 ,以下代码都依此版本为准。

数据

本文使用的数据是 THUCNews 中train.txt、dev.txt、test.txt 中所有的中文数据,一共用20000条。

 图1 训练数据

字向量

处理数据

    # 得到每一行的数据 []datas = open('data/word.txt', 'r', encoding='gbk').read().split("\n")# 得到一行的单个字 [[],...,[]]word_datas = [[i for i in data if i != " "] for data in datas]

 图2 将数据处理成字

训练

    model = Word2Vec(word_datas,  # 需要训练的文本vector_size=10,   # 词向量的维度window=2,  # 句子中当前单词和预测单词之间的最大距离min_count=1,  # 忽略总频率低于此的所有单词 出现的频率小于 min_count 不用作词向量workers=8,  # 使用这些工作线程来训练模型(使用多核机器进行更快的训练)sg=0,  # 训练方法 1:skip-gram 0;CBOW。epochs=10  # 语料库上的迭代次数)

 图3 模型结构内容1

训练好字向量后,我们使用最多的是 index_to_key 、 key_to_index 、字向量,根据前面两个,就可以对文字进行编码与解码。

 图4 模型结构内容2

注:模型中的 index_to_key 、 key_to_index 、字向量 都可以单独保存

    pkl.dump([model.wv.index_to_key, model.wv.key_to_index, model.wv.vectors], open("PartialWeight.pkl", "wb"))

保存模型

    # 字向量保存model.wv.save_word2vec_format('word_data.vector',   # 保存路径binary=False  # 如果为 True,则数据将以二进制 word2vec 格式保存,否则将以纯文本格式保存)# 模型保存model.save('word.model')

通过保存字向量(word_data.vector),第一行第一个数字表示一共有多少字,第二个数字表示一个字用10的数字表示。

比如:0 --> [0.99632174 2.0563052 -0.72112525 3.789005 -4.6471505 -2.838667 -4.621025 4.180826 3.625088 3.2602801]

图6 字向量部分内容

使用

加载模型

    # 1 通过模型加载词向量(recommend)model = gensim.models.Word2Vec.load('word.model')# 2 通过字向量加载vector = KeyedVectors.load_word2vec_format('word_data.vector')

查看

model.wv.index_to_key

 图7 查看 index_to_key 的部分内容

model.wv['提'] --》通过模型进行查看

  图8 通过模型进行查看字 “提” 的向量

vector['提'] --》通过字向量进行查看

图9 通过字向量进行查看字 “提” 的向量

可以发现两种方法得到的结果都是一样的

词向量

处理数据

    datas = open("data/word.txt", "r", encoding="gbk").read().split("\n")words_datas = [[i for i in (jieba.cut(data))] for data in datas]

图10 将数据处理成词

训练与保存模型

    model = Word2Vec(words_datas, vector_size=10, window=2, min_count=1, workers=8,  sg=0, epochs=10)model.wv.save_word2vec_format('words_data.vector', binary=False)model.save('words.model')

源码获取

Word2Vec 字&词向量

深度学习-nlp系列(4):Word2Vec 字词向量的训练和使用相关推荐

  1. 深度学习-nlp系列(2)文本分类(Bert)pytorch

    对于 Bert 来说,用于文本分类是最常见的,并且准确率也很高.本文将会对 bert 用于文本分类来做详细的介绍. 预训练模型 对于不同的数据,需要导入不同的预训练模型. 预训练模型下载地址:Mode ...

  2. 深度学习入门系列21:项目:用LSTM+CNN对电影评论分类

    大家好,我技术人Howzit,这是深度学习入门系列第二十一篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列 ...

  3. 深度学习入门系列1:多层感知器概述

    本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...

  4. 深度学习入门系列23:项目:用爱丽丝梦游仙境生成文本

    大家好,我技术人Howzit,这是深度学习入门系列第二十三篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列 ...

  5. 深度学习入门系列6项目实战:声纳回声识别

    大家好,我技术人Howzit,这是深度学习入门系列第六篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列3: ...

  6. Python深度学习-NLP实战:字向量的训练与生成

    系列文章目录 Python深度学习-NLP实战:深度学习系列培训教程 Linux服务器软件的简单使用 Linux命令的简单使用 训练集.测试集.验证集的介绍及制作 字向量的训练与生成 文本分类之SVM ...

  7. 一文概述2017年深度学习NLP重大进展与趋势

    本文,我将概述 2017 年深度学习技术在 NLP 领域带来的进步.可能会有遗漏,毕竟涵盖所有论文.框架和工具难度太大.我想和大家分享这一年我最喜欢的一些研究.我认为 2017 年是 NLP 领域的重 ...

  8. 深度学习(1)---2017年深度学习NLP重大进展与趋势

    深度学习(DL)架构和算法在图像识别.语音处理等领域实现了很大的进展.而深度学习在自然语言处理方面的表现最初并没有那么起眼,不过现在我们可以看到深度学习对 NLP 的贡献,在很多常见的 NLP 任务中 ...

  9. 【自然语言处理】一文概述2017年深度学习NLP重大进展与趋势

    选自 tryolabs 机器之心编译 参与:路雪.黄小天.蒋思源 作者通过本文概述了 2017 年深度学习技术在 NLP 领域带来的进步,以及未来的发展趋势,并与大家分享了这一年中作者最喜欢的研究.2 ...

最新文章

  1. php redis search,php redis类
  2. Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(Python)
  3. [NOIP 2015]运输计划-[树上差分+二分答案]-解题报告
  4. 一分钟了解阿里云产品:对象存储OSS概述
  5. Shader中颜色混合的算法
  6. mysql内连接的自连接_mysql 内连接、外连接、自连接
  7. 解决:Docker 启动的容器内部时间比服务器时间晚 8 小时,容器内部时间与宿主机时间不一致
  8. 找出数组中只出现一次的数
  9. python在线发音-Python如何实现文本转语音
  10. 嵌入式C语言(入门必看)
  11. 北京计算机专业考研录取分数线,2018北京航空航天大学计算机考研复试分数线_计算机考研分数线...
  12. 基于机器学习的文本情感分类
  13. Navicat Premium 15 的下载及其安装
  14. ArcGIS批量裁剪栅格数据
  15. nginx+uWSGI+django+virtualenv+supervisor发布web服务器流程
  16. LeetCode 506 Relative Ranks
  17. 计算机应用基础心得体会300字,网络远程学习的心得体会
  18. Matlab对图像进行裁剪。seam carving
  19. 设计UI的语言——XAML
  20. 【阿里云IoT+YF3300】15.阿里云物联网小程序构建

热门文章

  1. 【咕嘎文本对比助手】如何两份手机号或文本对比去重,新旧两批号码如何快速的对比重复,找出重复和不重复的部分,单个文件如何找出重复,单个文件如何找出不重复下面关于五种逻辑做详细解答
  2. java中上传头像前剪切和预览
  3. 金融市场基础知识小结
  4. Servlet的response.getWriter.printJSP
  5. uniapp引入秋云ucharts 亲测有效
  6. html css 和 js 如何协同工作的
  7. jass 添加资源的代码
  8. 星空主题设计理念_设计星空 | 刘红蕾:用匠心打造诗意化空间
  9. 应用网站图标 下载网站图标
  10. docker数据卷插件