在做文本情感分类的项目,研究到Word2Vec模型了。

自己来实践一下,网上大多数代码经过时间的流逝,多多少少都出了点小问题,为了方便自己之后的学术垃圾的制造,把自己跑出来的,修改过的代码和方法记录一下。

1.环境

1.1环境配置

Python3.9,Pycharm2021

1.2需要的库(搭建的虚拟环境,直接通过File->Settings引入)

import logging
from gensim.corpora import WikiCorpus
import jieba
import logging
from gensim.models import word2vec
import warnings
import os.path
import sys
import multiprocessing
from gensim.models.word2vec import LineSentence

1.3Opencc简繁置换插件

根据以下这篇博文的内容进行安装和操作即可。

windows使用opencc中文简体和繁体互转_修炼之路-CSDN博客_opencc

2.数据下载

wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,里面是一个XML文件。(有点大,2G+)(本代码实现不用解压!)
下载地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2

3.代码实现

3.1将xml格式文件转换成txt格式

import logging
from gensim.corpora import WikiCorpusdef main():logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)logging.info("------------ the program is running -------------")path_to_wiki_dump = "zhwiki-latest-pages-articles.xml.bz2"wiki_corpus = WikiCorpus(path_to_wiki_dump, dictionary={})num = 0with open('wiki.zh.txt', 'w', encoding='utf-8') as output:for text in wiki_corpus.get_texts():  # get_texts() 将 wiki的一篇文章转为textd的一行output.write(' '.join(text) + '\n')num += 1if num % 10000 == 0:logging.info("已处理 %d 文章" % num)if __name__ == '__main__':main()

得到文件:wiki.zh.txt

3.2此文件是一个繁体字形式,需要用Opencc转换成简体字。安装好Opencc之后在cmd按照以下格式输入:

opencc -i 需要转换的文件路径 -o 转换后的文件路径 -c 配置文件路径

得到文件:wiki.zh.simp.txt

3.3将简体字文件进行分词,得到文件:wiki_seg.txt

import jieba
import loggingdef main():logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)stopword_set = set()output = open('wiki_seg.txt', 'w', encoding='utf-8')with open('wiki.zh.simp.txt', 'r', encoding='utf-8') as content:for texts_num, line in enumerate(content):  # enumerate 给 line前加序号line = line.strip('\n')words = jieba.cut(line, cut_all=False)for word in words:if word not in stopword_set:output.write(word + ' ')output.write('\n')if (texts_num + 1) % 10000 == 0:logging.info("已完成前 %d 行的断词" % (texts_num + 1))output.close()if __name__ == '__main__':main()

3.4模型训练

获得模型:chinese_wiki_word2vec.model

from gensim.models import word2vec
import loggingdef main():logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)sentences = word2vec.LineSentence("wiki_seg.txt")model = word2vec.Word2Vec(sentences, size=250, min_count=5)  # size 用来设置神经网络的层数model.save("chinese_wiki_word2vec.model")if __name__ == "__main__":main()

获得向量文件:wiki.zh.text.vector

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')# 忽略警告import logging
import os.path
import sys
import multiprocessingfrom gensim.corpora import WikiCorpus
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentenceif __name__ == '__main__':#print open('/Users/sy/Desktop/pyRoot/wiki_zh_vec/cmd.txt').readlines()#sys.exit()program = os.path.basename(sys.argv[0])logger = logging.getLogger(program)logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s',level=logging.INFO)logger.info("running %s" % ' '.join(sys.argv))# inp为输入语料, outp1 为输出模型, outp2为原始c版本word2vec的vector格式的模型#fdir = '/Users/sy/Desktop/pyRoot/wiki_zh_vec/'inp = 'wiki.zh.simp.txt'#outp1 = fdir + 'wiki.zh.text.model'outp2 = 'wiki.zh.text.vector'# 训练skip-gram模型model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5,workers=multiprocessing.cpu_count())# 保存模型#model.save(outp1)model.wv.save_word2vec_format(outp2, binary=False)

---------------------------------------------------------------------------------------------------------------------------------

以上代码和过程参考了

基于wiki的中文语料进行word2vec模型训练_Mrhan的博客-CSDN博客

利用Python实现wiki中文语料的word2vec模型构建 - 简书

等博文的内容,对其中部分进行修改。感谢各位前辈!

基于WIKI中文语料·Word2Vec模型训练·Python相关推荐

  1. 基于深度学习的Wiki中文语料词word2vec向量模型

    资源下载地址:https://download.csdn.net/download/sheziqiong/85820613 资源下载地址:https://download.csdn.net/downl ...

  2. 中文word2vec的python实现_利用Python实现wiki中文语料的word2vec模型构建

    本实例主要介绍的是选取wiki中文语料,并使用python完成Word2vec模型构建的实践过程,不包含原理部分,旨在一步一步的了解自然语言处理的基本方法和步骤.文章主要包含了开发环境准备.数据的获取 ...

  3. 利用Python构建Wiki中文语料词向量模型

    利用Python构建Wiki中文语料词向量模型试验 完整代码下载地址:利用Python构建Wiki中文语料词向量模型 本实例主要介绍的是选取wiki中文语料,并使用python完成Word2vec模型 ...

  4. wiki中文语料的word2vec模型构建

    一.利用wiki中文语料进行word2vec模型构建 1)数据获取 到wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,里 ...

  5. 使用gensim训练中文语料word2vec

    使用gensim训练中文语料word2vec 目录 使用gensim训练中文语料word2vec 1.项目目录结构 1.1 文件说明: 1.2 项目下载地址 2.使用jieba中文切词工具进行切词 2 ...

  6. python wiki中文语料分词

    上篇将wiki中文语料已经下载下来(wiki中文文本语料下载并处理 ubuntu + python2.7),并且转为了txt格式,本篇对txt文件进行分词,分词后才能使用word2vector训练词向 ...

  7. 基于wiki中文语料库的gensim模型使用方法以及R语言的调用方式

    基于wiki中文语料库的gensim模型使用方法以及R语言的调用方式 近期想要整理下硬盘里的东西,看到本科毕设做情感倾向分析相关的数据,想起当时使用gensim训练词向量模型训练了超级久,决定将训练好 ...

  8. [书蕴笔记-1]word2vec模型训练

    word2vec模型训练 前言 整体索引在此 书蕴--基于书评的人工智能推荐系统 上次把文本进行了预处理,主要是使用正则去除标签以及对文本去除停用词以及结巴分词. 后续还会加入tf-idf来动态选取停 ...

  9. SnowNLP使用自定义语料进行模型训练(情感分析)

    SnowNLP SnowNLP是一个功能强大的中文文本处理库,它囊括了中文分词.词性标注.情感分析.文本分类.关键字/摘要提取.TF/IDF.文本相似度等诸多功能,像隐马尔科夫模型.朴素贝叶斯.Tex ...

  10. Spark下的word2vec模型训练

    一.引言 前边一节介绍了Word2Vec模型训练同义词,那么在大数据量的情况下,我们自然想到了用spark来进行训练.下面就介绍我们是如何实现spark上的模型训练. 二.分词 模型训练的输入是分好词 ...

最新文章

  1. 《Essential C++》读书笔记 之 泛型编程风格
  2. 在html中引入jQuery包的方法
  3. Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读
  4. LeetCode 86分割链表87扰乱字符串
  5. RMAN Restore, Recovery
  6. sql不替换uid的更新数据语句
  7. Please ensure that adb is correctly located at……问题解决方案
  8. 使用AIR运行另外的程序。
  9. mybatis实战总结
  10. 机器学习应用量化投资没啥用?那是你方法不对!
  11. Form,你到底是客户端还是服务端
  12. 【资料分享】STM32配置TB6612驱动程序详解
  13. xp系统怎么看计算机内存条,XP环境下怎么查看虚拟内存?XP系统虚拟内存过低怎么设置?...
  14. js的柯里化(curry)
  15. Go语言解决读取文件乱码
  16. 远程语音 开源_通过开源语音聊天简化远程会议
  17. matlab在axis,matlab中axis的用法
  18. VScode提升效率技巧教程
  19. windows自带截图键(shift+ win + s)没有反应,一招教你快速解决!
  20. 环信IM即时通讯集成-遇到问题及创建默认会话+默认欢迎语

热门文章

  1. U盘复制东西时显示:磁盘被写保护,请去掉写保护或使用另一张磁盘的解决方法。
  2. Removing a detached instance--删除失败
  3. 钟平逻辑英语语法_钟平逻辑英语教程视频1-5季全(含笔记 支持百度云)
  4. linux 下svn: E175002: 方法 REPORT 失败于 “/svn/GameSvn/!svn/me”: 不能读块分割符: 安全连接切断 (https://192.168.0.88)
  5. 汉语为主体的计算机网络环境,读书笔记 | 鲁川:汉语语法的意合网络 | 从网络到表层序列的生成...
  6. 0.1 番外篇: UML 类图
  7. 单打打法类型及技、战术特点
  8. 蜗牛星际安装U-NAS
  9. java dos攻击_一种高级的DoS攻击-Hash碰撞攻击
  10. 按键精灵文字识别插件_按键精灵课程学习目录