【NLP】维基百科中文数据训练word2vec词向量模型——基于gensim库
前言
本篇主要是基于gensim
库中的 Word2Vec
模型,使用维基百科中文数据训练word2vec
词向量模型,大体步骤如下:
- 数据预处理
- 模型的训练
- 模型的测试
准备条件:
- Windows10 64位
- Python3.6,并安装
gensim
库:pip install gensim
- 数据集:下载地址
注意:
- 下载
zhwiki-latest-pages-articles-multistream.xml.bz2
此类型的,其中包括:articles
以及后缀为xml.bz2
- 尽可能下载大一点的,我下载的是1.7G的,语料库越大,模型的效果会比较好
- opencc(中文繁体转简体):下载地址
我这里下载的是
opencc-1.0.1-win64.7z
,下载后解压备用即可,解压后得到文件夹:opencc-1.0.1-win64
本篇所有脚本代码可见:Github
其中提供了脚本文件和
opencc
工具包,由于数据比较大,所以这里我没有上传,可以自行下载训练模型。
一、数据预处理
下载后的数据如下:
1、将下载后的数据转为txt
文本文件
- 这里只需要使用写好的
python
脚本文件执行即可,此步骤大概需要20分钟左右,根据个人电脑配置。
python
脚本文件可见: process.py
执行语句:
python process.py zhwiki-latest-pages-articles.xml.bz2 wiki_zh.txt
#python 原数据的文件名 转换后数据的文件名
#中间为空格
执行后得到:
2、繁体转简体
打开 wiki_zh.txt
文件看看:
- 由于文件比较大,所以一般文本编辑器很难打开,我们可以写个
python
脚本来读取部分内容。
python
脚本文件可见: read_file.py
执行语句:
python read_file.py
脚本代码如下:
import codecsf = codecs.open('wiki_zh.txt', 'r', encoding="utf8") # 这里打开哪个文件就改为哪个文件的文件名
line = f.readline()
print(line)
运行结果如下:
文件中都是繁体中文,所以我们需要将其转换为简体中文,这时候
opencc
就派上用场了
繁体转简体:
- 将
wiki_zh.txt
文件移到opencc
解压后的文件夹opencc-1.0.1-win64
下,执行如下语句:
opencc -i wiki_zh.txt -o wiki_zh_jian.txt -c t2s.json
此步骤大概需要几分钟的时间,我的花了大概1分钟
执行后结果为:
查看内容:
- 同样使用
read_file.py
脚本文件查看,需要修改文件名。
此时我们发现,文本文件中已经都是简体中文了,接下来我们要对该文本进行分词操作
3、jieba
分词
- 使用写好的
python
脚本文件执行即可
python
脚本文件可见: jieba_cut.py
执行语句:
python jieba_cut.py
此步骤我花了大概十几分钟
执行结果:
查看内容:
- 同样的方式
此时,我们就已经分好词了,至此我们数据预处理就做好了,下面就开始模型训练了
二、模型的训练
- 使用写好的
python
脚本文件执行即可
python
脚本文件可见: word2vec_model.py
执行语句:
python word2vec_model.py wiki_zh_jian_cut.txt wiki_zh.model wiki_zh.vector
此步骤我花了一个多小时
执行结果:
模型训练好了,我们可以来试试这个模型怎么样了
三、模型的测试
- 执行脚本文件
test_model.py
测试代码:
from gensim.models import Word2Vecen_wiki_word2vec_model = Word2Vec.load('wiki.zh.text.model')testwords = ['苹果', '数学', '学术', '白痴', '篮球']
for i in range(5):res = en_wiki_word2vec_model.most_similar(testwords[i])print(testwords[i])print(res)
执行语句:
python test_model.py
运行结果:
从上面的结果看来:
- 和“数学”词向量比较相近的词还真是,都是和“数学”有关的,其他词也是,说明这个模型还不错,给自己一个赞吧
四、总结
从上面的试验看来,应用维基百科的中文数据来训练模型还不错,要是我们有更好的语料库,或者更大的语料库,那模型的效果会不会更好呢?理论上是肯定的,我们可以将任何语料库提取、转换、分词后(当然,这些步骤不是每步都是必须的,但是分词是必须的),然后应用 gensim
库中的 Word2vec
模块进行训练。细心的朋友可能发现,现在有很多的分词工具(这里用的jieba
,另外还有北大开源的 pkuseg
,可参考:链接),那么分词的好坏会不会带来模型效果的提升呢?这也待进一步试验。我想分词结果越好,模型效果也越好吧。
另外,词向量的构建仅是自然语言处理中的一个强大的工具,我们还需要对构建好的词向量加以应用,用来处理自然语言处理的或许工作,如:词性标注、主题分类等等。
【NLP】维基百科中文数据训练word2vec词向量模型——基于gensim库相关推荐
- 维基百科简体中文语料训练word2vec词向量
步骤: 1.下载维基百科中文语料 2.使用工具从压缩包中抽取正文文本 3.将繁体字转简体字 4.分词 5.训练模型 6.测试模型 1.下载维基百科中文语料 语料下载地址:https://dumps.w ...
- NLP 利器 Gensim 来训练 word2vec 词向量模型的参数设置
使用 Gensim 来训练 word2vec 词向量模型的参数设置 文章目录 一.最小频次 min_count 二.词向量维度 size 三.并行处理核心数 workers 我们可以使用一些参数设置来 ...
- wiki中文文本语料下载,在维基百科中文语料训练Word2vec and doc2vec 文本向量化代码示例
首先下载wiki中文语料(大约1.7G) https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ...
- 【NLP】word2vec词向量模型训练——基于tensorflow
前言 维基百科中文数据训练word2vec词向量模型--基于gensim库 上文我们使用了 gensim 库中的 Word2vec 模块训练词向量模型,本篇我们通过 tensorflow 自己 ...
- Python Djang 搭建自动词性标注网站(基于Keras框架和维基百科中文预训练词向量Word2vec模型,分别实现由GRU、LSTM、RNN神经网络组成的词性标注模型)
引言 本文基于Keras框架和维基百科中文预训练词向量Word2vec模型,分别实现由GRU.LSTM.RNN神经网络组成的词性标注模型,并且将模型封装,使用python Django web框架搭建 ...
- 【NLP模型笔记】Intro || Word2vec词向量模型
INTRO 自然语言处理(Natural Language Processing),简称NLP.这个领域是通过统计学.数学模型.机器学习等相关技术研究人类语言的特征,对其进行数学的表示,并基于这种表示 ...
- 文本分布式表示(三):用gensim训练word2vec词向量
今天参考网上的博客,用gensim训练了word2vec词向量.训练的语料是著名科幻小说<三体>,这部小说我一直没有看,所以这次拿来折腾一下. <三体>这本小说里有不少人名和一 ...
- Word2Vec词向量模型代码
Word2Vec也称Word Embedding,中文的叫法是"词向量"或"词嵌入",是一种计算非常高效的,可以从原始语料中学习字词空间向量的预测模型.Word ...
- GENSIM官方教程(4.0.0beta最新版)-Word2Vec词向量模型
GENSIM官方教程(4.0.0beta最新版)-词向量模型 译文目录 回顾:词袋模型 简介:词向量模型 词向量模型训练实例 训练一个你自己的模型 储存和加载模型 训练参数 内存相关的细节 模型评估 ...
最新文章
- Spark集群模式概述
- JavaScript中九九乘法表制作
- 机器学习 —— 浅谈贝叶斯和MCMC
- 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】...
- 重构手册阅读笔记:重构的含义
- 使用create-react-app模板模仿12306app
- poj1860(spfa判正环)
- 【论文写作】SSM超市管理系统如何写可行性分析
- GoogLeNet模型
- selenium.common.exceptions.WebDriverException:Message: 'chromedriver' executable needs to be in PATH
- 死磕 Java8 新特性,17 种日期处理方式!
- 使用微软官方方法制作纯净WinPE
- Songtaste,酷到不行的音乐网站
- 数字孪生 软著登记表 模板
- C#+GDAL读取影像(1)
- 小程序身份证号码保留前后4位其他用“*”代替
- android kotlin扩展添加域名
- IT 行业的创新 - 创新的迷思
- 搭建一个弹幕新闻网站
- Anaconda3 安装教程
热门文章
- 【转】探索基础元素---基于WebGL的H5 3D游戏引擎BabylonJS
- 把excel转换成html格式的文件,极强PDF转换器将Excel表格转换成HTML网页格式的方法...
- 中国二氯甲烷行业研究与投资前景预测报告(2022版)
- mac系统-安装虚拟无人机px4及其简单操作教程
- 西北乱跑娃 --- python类方法重写
- 3.3V与5V系统电平兼容的方法探究
- java论坛私信_巡云轻论坛系统 - JAVA轻论坛
- 咻商跨境电商:shopee虾皮跨境电商——店铺运营篇
- matlab 白平衡,白平衡算法
- 市场渐冷,交易所拉锯战愈烈,牛熊无阻,我在乌镇等你