Python实现Word2vec学习笔记
参考:
中文word2vec的python实现
python初步实现word2vec
中英文维基百科语料上的Word2Vec实验

GitHub代码地址

1 文件目录结构:

[.../vord2vec]$ls
data  model_train.py  word2vec_test.py  word_cut.py
[.../vord2vec]$ ls ./data/*
./data/倚天屠龙记.txt

2 word_cut.py文件内容:

#该文件实现了加载原始文件,进行切词服务
# coding: utf-8
import io
import sys
import jiebafile_name = './data/倚天屠龙记.txt'
cut_file = './data/倚天屠龙记_cut.txt'reload(sys)
sys.setdefaultencoding('utf8')# 此函数作用是对初始语料进行分词处理后,作为训练模型的语料
def cut_txt(old_file, cut_file):print 'cut_txt begin.'try:# read file contextfi = io.open(old_file, 'r', encoding='utf-8')text = fi.read()  # 获取文本内容# cut wordnew_text = jieba.cut(text, cut_all=False)  # 精确模式str_out = ' '.join(new_text).replace(',', '').replace('。', '').replace('?', '').replace('!', '') \.replace('“', '').replace('”', '').replace(':', '').replace('…', '').replace('(', '').replace(')', '') \.replace('—', '').replace('《', '').replace('》', '').replace('、', '').replace('‘', '') \.replace('’', '')     # 去掉标点符号# write to cut_filefo = io.open(cut_file, 'w', encoding='utf-8')fo.write(str_out)except BaseException as e:  # 因BaseException是所有错误的基类,用它可以获得所有错误类型print(Exception, ":", e)    # 追踪错误详细信息print 'cut_txt end.'if __name__ == "__main__":cut_txt(file_name, cut_file)

3 model_train.py

#该文件中实现通过切词生成的文件,通过该文件来训练模型并写入相应的文件。
# coding: utf-8import sys
import logging
from gensim.models import word2vecreload(sys)
sys.setdefaultencoding('utf8')train_file_name = "./data/倚天屠龙记_cut.txt"
save_model_file = "./data/倚天屠龙记.model"def model_train(train_file_name, save_model_file):  # model_file_name为训练语料的路径,save_model为保存模型名print 'model_train begin.'try:# 模型训练,生成词向量logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)sentences = word2vec.Text8Corpus(train_file_name)  # 加载语料model = word2vec.Word2Vec(sentences, size=200)  # 训练skip-gram模型; 默认window=5model.save(save_model_file)model.wv.save_word2vec_format(save_model_file + ".bin", binary=True)   # 以二进制类型保存模型以便重用except BaseException as e:  # 因BaseException是所有错误的基类,用它可以获得所有错误类型print(Exception, ":", e)    # 追踪错误详细信息print 'model_train end.'if __name__ == "__main__":model_train(train_file_name, save_model_file)

4 word2vec_test.py

# 该文件中调用切词功能文件word_cut.py和模型训练功能文件model_train.py,使用训练出的模型写测试实例。
# coding: utf-8import os
import sys
import logging
import word_cut
import model_train
from gensim.models import word2vecreload(sys)
sys.setdefaultencoding('utf8')file_name = './data/倚天屠龙记.txt'
train_file_name = file_name + '_cut'
model_file = file_name + '.model'
model_file_bin = file_name + '.model.bin'def word2vec_test():print 'word2vec_test begin.'try:# 加载日志输出配置logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)# 加载文件切词print '加载文件:%s 切词后存放为:%s.' % (file_name, train_file_name)if not os.path.exists(file_name):    # 判断文件是否存在,参考:https://www.cnblogs.com/jhao/p/7243043.htmlprint '加载文件切词失败。'exit(0)else:word_cut.cut_txt(file_name, train_file_name)  # 须注意文件必须先另存为utf-8编码格式# 训练模型print '从文件:%s 训练模型存放在: %s' % (train_file_name, model_file)if not os.path.exists(model_file):     # 判断文件是否存在model_train.model_train(train_file_name, model_file)else:print('此训练模型已经存在,不用再次训练')# 加载已训练好的模型print '从文件:%s 中加载模型' % model_file# model_1 = gensim.models.KeyedVectors.load_word2vec_format(model_file_bin, binary=True)model_1 = word2vec.Word2Vec.load(model_file)# 计算两个词的相似度/相关程度y1 = model_1.similarity(u"赵敏", u"韦一笑")print u"赵敏和韦一笑的相似度为: %g" % y1print "-------------------------------\n"# 计算某个词的相关词列表y2 = model_1.most_similar(u"张三丰", topn=20)  # 20个最相关的print(u"和张三丰最相关的词有:\n")for item in y2:print "%s: %g" % (item[0], item[1])print("-------------------------------\n")except Exception, e:print "Exception", eprint 'word2vec_test end.'if __name__ == "__main__":word2vec_test()

5 测试结果:

//执行命令:python word2vec_test.py
//执行生成的文件:
[.../word2vec/data]$ ls
倚天屠龙记.txt  倚天屠龙记.txt_cut  倚天屠龙记.txt.model  倚天屠龙记.txt.model.bin

输出信息:

赵敏和韦一笑的相似度为: 0.832561
-------------------------------2018-07-16 17:01:05,815 : INFO : precomputing L2-norms of word weight vectors
和张三丰最相关的词有:高姓大名: 0.978904
拱手: 0.978083
铁冠道人: 0.977918
启禀: 0.977619
初次: 0.977287
喃喃: 0.976283
周先生: 0.976194
冷然: 0.975955
阳前: 0.975153
仇深似: 0.974774
属下: 0.974182
彭莹玉: 0.973856
宋远桥: 0.973482
贵帮: 0.972765
鹿: 0.970881
万里迢迢: 0.970759
张松溪: 0.970717
还礼: 0.970527
调兵遣将: 0.970323
李天垣: 0.969962
-------------------------------

Python实现Word2vec学习笔记相关推荐

  1. python嵩天课堂笔记_[Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

    [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周) 目录 强化学习 定义 马尔科夫决策过程 基本元素 值函数 最优值 ...

  2. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  3. python基础入门学习笔记 (2)

    python基础入门学习笔记 2021年2月8日 1 编译器和解释器的区别 编译器/解释器:高级语言与机器之间的翻译官 2 值传递: print "a = ",a print &q ...

  4. 关于Python的一些学习笔记(小白式笔记,持续更新)

    关于Python的一些学习笔记 瞎bb: 作为一个计算机专业的学生,Python应该是一门很有必要掌握的语言,但是由于鄙人太懒,一直对Python没有太多了解,但是随着知识的积累以及学业难度的增加,我 ...

  5. Python 基础知识学习笔记——NumPy

    Python基础知识学习笔记--NumPy 与 matlab 优秀的矩阵运算类似,python 提供了 numpy 库,这对熟悉 matlab 的用户来说非常友好.向量.矩阵和多维数组是数值计算中必不 ...

  6. Python 基础知识学习笔记——OpenCV(1)

    Python 基础知识学习笔记--OpenCV(1) OpenCV是一个开源的跨平台计算机视觉和机器学习软件库,它轻量而且高效,被广泛的使用. 整理一下OpenCV学习笔记,以防忘记. 文章目录 Py ...

  7. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

  8. python基础知识学习笔记(2)

    python基础知识学习笔记(2) 整理一下python基础知识,以防忘记 文章目录 python基础知识学习笔记(2) python简洁的一行代码 python简洁的一行代码 1.交换两个变量 # ...

  9. python基础知识学习笔记(1)

    python 基础知识学习笔记(1) 总结一下Python基础知识,以防忘记. 文章目录 python 基础知识学习笔记(1) 一.起步 1.python安装与编译环境 二.变量和简单数据类型 三.列 ...

最新文章

  1. PPT文字怎样规划 哪里可以代做PPT
  2. POJ 1611 The Suspects
  3. oracle虚拟机怎么装系统,Virtualbox怎么安装系统 VirtualBox虚拟机安装Win8系统教程 (3)...
  4. 描写火车站场景_关于描写火车站的句子
  5. dede无法在这个位置找到head.html2,织梦搜索:DedeCMS 提示信息
  6. java集合框架总结(一)
  7. java中如何定位文本框_div定位在文本框下
  8. 杭电 1272 并查集判断环
  9. oracle 10g dg参数配置,Windows平台之Oracle10g DG配置
  10. 如何在 macOS Monterey 中使用预览合并 PDF?
  11. 2014-10-18 多玩初面
  12. 代购类网站商品高清晰大图片(1000x1000)的采集解决方案 - hackercai - 博客园
  13. 【笔记总结】高中英语——其二:名词性从句
  14. 阿里系退出吴奇隆刘诗诗公司 仅靠明星光环难留资本
  15. 如何将PDF批量转成JPG?
  16. win10专业版使用vmware安装虚拟机时“出现此主机支持Intel VT-x,但Intel VT-x处于禁用状态”。
  17. POJ刷题列表——正在进行
  18. 简单的修改项目中的头像
  19. CSS pink老师教学笔记详解
  20. php+获取上午还是下午,pm是上午还是下午?

热门文章

  1. cmnet和cmwap的区别
  2. WebApi 路由机制剖析
  3. 比尔-盖茨预言:未来家家都有机器人
  4. Alpha GO核心原理
  5. AlphaStar的游戏——星际争霸2 AI综述
  6. 好用的网页扒图插件-ImageAssistant
  7. 微积分入门书籍(二)
  8. mpvue 引入weui
  9. 三角兽首席科学家分享实录:基于对抗学习的生成式对话模型
  10. Page Rank查询工具 | Page Rank Checker