维基百科简体中文语料训练word2vec词向量
步骤:
1.下载维基百科中文语料
2.使用工具从压缩包中抽取正文文本
3.将繁体字转简体字
4.分词
5.训练模型
6.测试模型
1.下载维基百科中文语料
语料下载地址:https://dumps.wikimedia.org/zhwiki/
有不同时间段的下载地址,我们需要训练词向量,请选择包含articles.xml.bz2字段的链接(包含词条正文)。可以发现有不同大小的包,包越大训练的词向量越精确,训练时间也越长。下载完成后得到一个压缩包,先不要解压,后面用工具进行处理。
这是我下载的语料,161 MB。
2.使用工具从压缩包中抽取正文文本
可以使用Gensim工具包中提供的wiki数据的抽取处理类WikiCorpus,或Wikipedia Extractor脚本文件。
这里使用Wikipedia Extractor从压缩包提取正文文本,Wikipedia Extractor是意大利人用 Python 写的一个维基百科抽取器,使用非常方便。
Wikipedia Extractor下载地址:https://blog.csdn.net/qq_41648012/article/details/105217726
将里面的代码复制到一个python文件中,命名为WikiExtractor.py
将压缩包zhwiki-20200101-pages-articles1.xml-p1p162886.bz2和抽取器WikiExtractor.py放在同一个文件夹中,使用cmd中cd定位到该文件夹后,使用一下命令提取正文文本:
python WikiExtractor.py -b 500M -o wiki_00 zhwiki-20200101-pages-articles1.xml-p1p162886.bz2
参数说明:
1.WikiExtractor.py里面存放Wikipedia Extractor代码;
2.-b 1000M表示的是以1000M为单位进行切分,有时候可能语料太大,我们可能需要切分成几个小的文件(默认),这里由于我需要处理的包只有161 MB,所以存入一个文件就行了,所以只需要设置的大小比161 MB大即可;
3.wiki_00:需要将提取的文件存放的路径;
4.zhwiki-20200101-pages-articles1.xml-p1p162886.bz2:需要进行提取的.bz2文件的路径;
打开wiki_00文件,发现语料繁体简体字混杂:
3.将繁体字转简体字
使用opencc工具将繁体字转简体字,在下面的链接选择合适的版本,点击下载后解压即可使用。
opencc下载地址:https://bintray.com/package/files/byvoid/opencc/OpenCC
我选择的是opencc-1.0.1-win64.7z版本。将wiki_00文件放入刚刚解压的opencc-1.0.1-win64文件夹中,使用cmd中cd定位到opencc-1.0.1-win64文件夹中,然后执行以下命令:
opencc -i wiki_00 -o zhwiki_jian_zh.txt -c t2s.json
发现多出来zhwiki_jian_zh.txt文件:
4.分词
这里使用jieba分词工具进行分词,执行如下代码:
import jieba.analyse
import codecs#以写的方式打开原始的简体中文语料库
f=codecs.open('C:\\Users\\28612\\Desktop\\test\\zhwiki_jian_zh.txt','r',encoding="utf8")
#将分完词的语料写入到wiki_jian_zh_seg-189.5.txt文件中
target = codecs.open("C:\\Users\\28612\\Desktop\\test\\wiki_jian_zh_seg-189.5.txt", 'w',encoding="utf8")print('open files')
line_num=1
line = f.readline()#循环遍历每一行,并对这一行进行分词操作
#如果下一行没有内容的话,就会readline会返回-1,则while -1就会跳出循环
while line:print('---- processing ', line_num, ' article----------------')line_seg = " ".join(jieba.cut(line))target.writelines(line_seg)line_num = line_num + 1line = f.readline()#关闭两个文件流,并退出程序
f.close()
target.close()
exit()
得到分词文件wiki_jian_zh_seg-189.5.txt:
(可以看出有些英文字母和标点没有去除,有需要的可以去除)
5.训练模型
通过Gensim模块中的word2vec函数来训练语料:
import logging
import os.path
import sys
import multiprocessing
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentenceif __name__ == '__main__':logger = logging.getLogger('my')#1.format: 指定输出的格式和内容,format可以输出很多有用信息,#%(asctime)s: 打印日志的时间#%(levelname)s: 打印日志级别名称#%(message)s: 打印日志信息logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')logging.root.setLevel(level=logging.INFO)#打印这是一个通知日志logger.info("running %s" % ' '.join(sys.argv))# check and process input arguments#inp:分好词的文本#outp1:训练好的模型#outp2:得到的词向量inp='C:\\Users\\28612\\Desktop\\test\\wiki_jian_zh_seg-189.5.txt'outp1='C:\\Users\\28612\\Desktop\\test\\wiki_zh_jian_text.model'outp2='C:\\Users\\28612\\Desktop\\test\\wiki_zh_jian_text.vector''''LineSentence(inp):格式简单:一句话=一行; 单词已经过预处理并被空格分隔。size:是每个词的向量维度; window:是词向量训练时的上下文扫描窗口大小,窗口为5就是考虑前5个词和后5个词; min-count:设置最低频率,默认是5,如果一个词语在文档中出现的次数小于5,那么就会丢弃; workers:是训练的进程数(需要更精准的解释,请指正),默认是当前运行机器的处理器核数。这些参数先记住就可以了。sg ({0, 1}, optional) – 模型的训练算法: 1: skip-gram; 0: CBOWalpha (float, optional) – 初始学习率iter (int, optional) – 迭代次数,默认为5'''model = Word2Vec(LineSentence(inp), size=25, window=2, min_count=20, workers=multiprocessing.cpu_count())model.save(outp1)model.wv.save_word2vec_format(outp2, binary=False)
inp为分好词的语料;
outp1为训练好的模型存放的文件,需要使用模型时直接从outp1中读取;
outp2为训练好的模型以向量的形式存放在文件中;
代码中相关参数可以自己查资料调整,模型跑了一天一夜。。。
记得把这个改成从不,不然睡一觉起来发现程序没运行
训练好后得到了如下两个文件:
wiki_zh_jian_text.vector:
wiki_zh_jian_text.model:
6.测试模型
from gensim.models import Word2Vecen_wiki_word2vec_model = Word2Vec.load('C:\\Users\\28612\\Desktop\\test\\wiki_zh_jian_text.model')
testwords = ['数学','计算机','苹果']
for i in range(len(testwords)):res = en_wiki_word2vec_model.most_similar(testwords[i])print(testwords[i])print(res)
运行结果:
参考:
维基百科简体中文语料的提取:https://zhuanlan.zhihu.com/p/39960476
使用Gensim模块训练词向量:https://zhuanlan.zhihu.com/p/40016964
维基百科简体中文语料训练word2vec词向量相关推荐
- 【NLP】维基百科中文数据训练word2vec词向量模型——基于gensim库
前言 本篇主要是基于gensim 库中的 Word2Vec 模型,使用维基百科中文数据训练word2vec 词向量模型,大体步骤如下: 数据预处理 模型的训练 模型的测试 准备条件: Window ...
- wiki中文文本语料下载,在维基百科中文语料训练Word2vec and doc2vec 文本向量化代码示例
首先下载wiki中文语料(大约1.7G) https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ...
- NLP 利器 Gensim 来训练 word2vec 词向量模型的参数设置
使用 Gensim 来训练 word2vec 词向量模型的参数设置 文章目录 一.最小频次 min_count 二.词向量维度 size 三.并行处理核心数 workers 我们可以使用一些参数设置来 ...
- 文本分布式表示(三):用gensim训练word2vec词向量
今天参考网上的博客,用gensim训练了word2vec词向量.训练的语料是著名科幻小说<三体>,这部小说我一直没有看,所以这次拿来折腾一下. <三体>这本小说里有不少人名和一 ...
- python训练Word2Vec词向量
一.模型训练 1.安装gensim pip install gensim gensim中封装了包括word2vec.doc2vec等模型,word2vec采用了CBOW(Continuous Bag- ...
- 【用户行为分析】 用wiki百科中文语料训练word2vec模型
本文地址: http://blog.csdn.net/hereiskxm/article/details/49664845 前言 最近在调研基于内容的用户行为分析,在过程中发现了word2vec这个 ...
- 调用gensim库训练word2vec词向量
首先准备符合规定输入的语料: import jieba raw_text = ["你站在桥上看风景","看风景的人在楼上看你","明月装饰了你的窗子& ...
- 使用wiki百科和gensim训练中文词向量
下载wiki百科的数据 那么我是从https://dumps.wikimedia.org/zhwiki/20170520/上下载的1.4G的这个xml版本 抽取数据的内容 使用https://gith ...
- 【NLP】word2vec词向量模型训练——基于tensorflow
前言 维基百科中文数据训练word2vec词向量模型--基于gensim库 上文我们使用了 gensim 库中的 Word2vec 模块训练词向量模型,本篇我们通过 tensorflow 自己 ...
最新文章
- 这次终于不再为 iptables 犯迷糊了!
- 简单探讨可牛影像软件中具有肤质保留功能的磨皮算法及其实现细节。
- linux下测试RTC驱动相关的命令date和hwclock常见用法简介
- 虎牙直播在AI实时剪辑技术上的创新实践
- Some Essential JavaScript Questions And Answers(1)
- AtCoder Beginner Contest 230
- 你可能没听过的11个Python库,你有认识的吗?
- Alex 的 Hadoop 菜鸟教程: 第16课 Pig 安装使用教程
- 用gulp-imageisux智图api压缩图片
- 编写一个程序求解字谜游戏
- 计算机复制教程,ghost复制c盘到另一个硬盘方法
- ffmpeg基础五:单独解码裸流aac或MP3或H264
- TesterHome创始人思寒:如何从手工测试进阶自动化测试?十余年经验分享
- html格式的字幕如何匹配电影,电影片尾字幕内容范本
- 服务器上Web.config文件不能保存,Web.Config – 由于权限不足,无法读取configuration文件...
- 转移到ios下载安卓_转移到iOS下载-转移到iOS安装器(安卓转移苹果软件)下载v2.10.0 安卓版-当易网...
- 通过MACE在Android手机上部署深度学习模型
- 关于SIGSEGV错误及处理方法
- 网络填坑之路(6)ethtool - 命令管理以太网卡
- pandas_datareader下载雅虎财经股价数据