基于WIKI中文语料·Word2Vec模型训练·Python
在做文本情感分类的项目,研究到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相关推荐
- 基于深度学习的Wiki中文语料词word2vec向量模型
资源下载地址:https://download.csdn.net/download/sheziqiong/85820613 资源下载地址:https://download.csdn.net/downl ...
- 中文word2vec的python实现_利用Python实现wiki中文语料的word2vec模型构建
本实例主要介绍的是选取wiki中文语料,并使用python完成Word2vec模型构建的实践过程,不包含原理部分,旨在一步一步的了解自然语言处理的基本方法和步骤.文章主要包含了开发环境准备.数据的获取 ...
- 利用Python构建Wiki中文语料词向量模型
利用Python构建Wiki中文语料词向量模型试验 完整代码下载地址:利用Python构建Wiki中文语料词向量模型 本实例主要介绍的是选取wiki中文语料,并使用python完成Word2vec模型 ...
- wiki中文语料的word2vec模型构建
一.利用wiki中文语料进行word2vec模型构建 1)数据获取 到wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,里 ...
- 使用gensim训练中文语料word2vec
使用gensim训练中文语料word2vec 目录 使用gensim训练中文语料word2vec 1.项目目录结构 1.1 文件说明: 1.2 项目下载地址 2.使用jieba中文切词工具进行切词 2 ...
- python wiki中文语料分词
上篇将wiki中文语料已经下载下来(wiki中文文本语料下载并处理 ubuntu + python2.7),并且转为了txt格式,本篇对txt文件进行分词,分词后才能使用word2vector训练词向 ...
- 基于wiki中文语料库的gensim模型使用方法以及R语言的调用方式
基于wiki中文语料库的gensim模型使用方法以及R语言的调用方式 近期想要整理下硬盘里的东西,看到本科毕设做情感倾向分析相关的数据,想起当时使用gensim训练词向量模型训练了超级久,决定将训练好 ...
- [书蕴笔记-1]word2vec模型训练
word2vec模型训练 前言 整体索引在此 书蕴--基于书评的人工智能推荐系统 上次把文本进行了预处理,主要是使用正则去除标签以及对文本去除停用词以及结巴分词. 后续还会加入tf-idf来动态选取停 ...
- SnowNLP使用自定义语料进行模型训练(情感分析)
SnowNLP SnowNLP是一个功能强大的中文文本处理库,它囊括了中文分词.词性标注.情感分析.文本分类.关键字/摘要提取.TF/IDF.文本相似度等诸多功能,像隐马尔科夫模型.朴素贝叶斯.Tex ...
- Spark下的word2vec模型训练
一.引言 前边一节介绍了Word2Vec模型训练同义词,那么在大数据量的情况下,我们自然想到了用spark来进行训练.下面就介绍我们是如何实现spark上的模型训练. 二.分词 模型训练的输入是分好词 ...
最新文章
- 《Essential C++》读书笔记 之 泛型编程风格
- 在html中引入jQuery包的方法
- Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读
- LeetCode 86分割链表87扰乱字符串
- RMAN Restore, Recovery
- sql不替换uid的更新数据语句
- Please ensure that adb is correctly located at……问题解决方案
- 使用AIR运行另外的程序。
- mybatis实战总结
- 机器学习应用量化投资没啥用?那是你方法不对!
- Form,你到底是客户端还是服务端
- 【资料分享】STM32配置TB6612驱动程序详解
- xp系统怎么看计算机内存条,XP环境下怎么查看虚拟内存?XP系统虚拟内存过低怎么设置?...
- js的柯里化(curry)
- Go语言解决读取文件乱码
- 远程语音 开源_通过开源语音聊天简化远程会议
- matlab在axis,matlab中axis的用法
- VScode提升效率技巧教程
- windows自带截图键(shift+ win + s)没有反应,一招教你快速解决!
- 环信IM即时通讯集成-遇到问题及创建默认会话+默认欢迎语
热门文章
- U盘复制东西时显示:磁盘被写保护,请去掉写保护或使用另一张磁盘的解决方法。
- Removing a detached instance--删除失败
- 钟平逻辑英语语法_钟平逻辑英语教程视频1-5季全(含笔记 支持百度云)
- linux 下svn: E175002: 方法 REPORT 失败于 “/svn/GameSvn/!svn/me”: 不能读块分割符: 安全连接切断 (https://192.168.0.88)
- 汉语为主体的计算机网络环境,读书笔记 | 鲁川:汉语语法的意合网络 | 从网络到表层序列的生成...
- 0.1 番外篇: UML 类图
- 单打打法类型及技、战术特点
- 蜗牛星际安装U-NAS
- java dos攻击_一种高级的DoS攻击-Hash碰撞攻击
- 按键精灵文字识别插件_按键精灵课程学习目录