一、利用wiki中文语料进行word2vec模型构建

 1)数据获取

  到wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,里面是一个XML文件

  下载地址如下:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2

  其中:https://dumps.wikimedia.org/zhwiki/latest/提供wiki各种文件下载,而且在不停的更新

  本人已经下载并上传百度云盘,链接:https://pan.baidu.com/s/1kzMwGwVR4h0wuOYU70aUhA 提取码:2axt

  然后在桌面新建wiki中文语料的word2vec模型构建文件夹,将下载的压缩文件放在内,进入wiki中文语料的word2vec模型构建文件夹,按住shift+右键,选择在此处打开命令窗口

  输入jupyter notebook,新建一个名为:wiki_word2vec_test的脚本文件:

 2)将XML的Wiki数据转换为text格式

  使用gensim.corpora中的WikiCorpus函数来处理维基百科的数据,转换后生成的文件wiki.zh.txt

import logging
import sys
import osfrom gensim.corpora import WikiCorpusprogram = os.path.basename( sys.argv[0] )
logger = logging.getLogger(program)logging.basicConfig(format='%(asctime)s: %(levelname)s: %(message)s')
logging.root.setLevel(level=logging.INFO)
logger.info( "running %s" % ' '.join(sys.argv) )inp = 'zhwiki-latest-pages-articles.xml.bz2'
outp = 'wiki.zh.txt'
space = ' '
i = 0
output = open(outp, 'w', encoding='utf-8')
#gensim里的维基百科处理类WikiCorpu
wiki = WikiCorpus(inp, lemmatize=False, dictionary=[] )#通过get_texts将维基里的每篇文章转换为1行text文本,并且去掉了标点符号等内容
for text in wiki.get_texts():output.write( space.join(text) + '\n' )i += 1if ( i % 10000 == 0):logger.info('Saved ' + str(i) + ' articles.')output.close()
logger.info('Finished Saved ' + str(i) + ' articles.')

  从下面的结果看27min处理了331588条数据,还是比较慢的,已经将wiki.zh.txt上传云盘,并且被压缩:

  链接:https://pan.baidu.com/s/1g7d87ztvAdr8CZd2rCnvOg 提取码:42x5

 3)中文繁体转简体

  Wiki中文语料中包含了很多繁体字,需要转成简体字再进行处理,这里使用到了OpenCC工具进行转换

  安装OpenCC:下载对应版本的OpenCC,https://bintray.com/package/files/byvoid/opencc/OpenCC,本人选择的是win 64位

  下载解压后,在wiki中文语料的word2vec模型构建文件夹下打开dos窗口:

opencc -i wiki.zh.txt -o wiki.zh.simp.txt -c t2s.json
#注意可以添加上opencc的绝对路径,t2s.json也要加绝对路径

  

  则会得到文件wiki.zh.simp.txt,即转成了简体的中文,由于文件过大,无法直接打开查看,我们使用代码查看前2行:

import codecs,sys
i = 0
f = codecs.open('wiki.zh.txt','r',encoding="utf-8")
for eachline in f:i += 1if (i < 3):print(eachline)else:break

  可以看出有很多繁体字:

  我们再来看看繁体转简体后:

import codecs,sys
i = 0
f = codecs.open('wiki.zh.simp.txt','r',encoding="utf-8")
for eachline in f:i += 1if (i < 3):print(eachline)else:break

  是不是都看懂了呢?

  其中的wiki.zh.simp.txt简体文件以及被我压缩,并上传至云盘:

  链接:https://pan.baidu.com/s/1Gx1iWORvKvmd5AzaZY3raw 提取码:45k5

 4)jieba分词

  本例中采用结巴分词对字体简化后的wiki中文语料数据集进行分词。由于此语料已经去除了标点符号,因此在分词程序中无需进行清洗操作,可直接分词

  若是自己采集的数据还需进行标点符号去除和去除停用词的操作

import jieba
import jieba.analyse
import codecsdef prepareData(sourceFile, targetFile):f =codecs.open(sourceFile, 'r', encoding='utf-8')target = codecs.open(targetFile, 'w', encoding='utf-8')print( 'open source file: '+ sourceFile )print( 'open target file: '+ targetFile )lineNum = 0for eachline in f:lineNum += 1if lineNum % 1000 == 0:print('---processing ', sourceFile, lineNum,' article---')seg_list = jieba.cut(eachline, cut_all=False)line_seg = ' '.join(seg_list)target.write(line_seg+ '\n')print('---Well Done!!!---' * 4)f.close()target.close()sourceFile = 'wiki.zh.simp.txt'
targetFile = 'wiki.zh.simp.seg.txt'
prepareData(sourceFile, targetFile)

  查看分词结果文件-wiki.zh.simp.seg.txt

import codecs,sys
i = 0
f = codecs.open('wiki.zh.simp.seg.txt','r',encoding="utf-8")
for eachline in f:i += 1if (i < 3):print(eachline)else:break

  其中分词结果文件wiki.zh.simp.seg.txt已经被压缩并上传云盘:

  链接:https://pan.baidu.com/s/15R75m5T2WlyjMagqkXbI6g 提取码:zr46

 5)Word2Vec模型训练

  分好词的文档即可进行word2vec词向量模型的训练了。文档较大,需要内存较大,具体Python代码实现如下所示:

import os
import sys
import logging
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
import multiprocessingprogram = 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格式的模型
inp = 'wiki.zh.simp.seg.txt'
outp1 = '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.zh.text.model是建好的模型,wiki.zh.text.vector是词向量,是每个词对应的词向量,可以在此基础上作文本特征的提取以及分类

  其中wiki.zh.text.modewiki.zh.text.vector文件已经上传云盘:

  wiki.zh.text.mode:https://pan.baidu.com/s/1mlZ_5-mY3GerWnvYADt3sA 提取码:7p83

  wiki.zh.text.vector:https://pan.baidu.com/s/16vEVQ79FkmVFwMPrA3G5mg 提取码:aaa5

 6)模型测试

  模型训练好后,来测试模型的结果

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')# 忽略警告
import sysimport gensim
model = gensim.models.Word2Vec.load('wiki.zh.text.model')
#与足球最相似的
word = model.most_similar("足球")
for each in word:print(each[0], each[1])print('*' * 20)word = model.most_similar(positive=['皇上','国王'],negative=['皇后'])
for t in word:print (t[0],t[1])print(model.doesnt_match('太后 妃子 贵人 贵妃 才人'.split(' ')))
print('*' * 20)print(model.similarity('书籍','书本'))
print('*' * 20)
print(model.similarity('逛街','书本'))

  

 7)致谢

  至此,使用python对中文wiki语料的词向量建模就全部结束了,wiki.zh.text.vector中是每个词对应的词向量,可以在此基础上作文本特征的提取以及分类

  本文参考:https://github.com/AimeeLee77/wiki_zh_word2vec

  感谢作者的分享,为后续情感分析打下了基础

转载于:https://www.cnblogs.com/always-fight/p/10310418.html

wiki中文语料的word2vec模型构建相关推荐

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

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

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

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

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

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

  4. 【用户行为分析】 用wiki百科中文语料训练word2vec模型

    本文地址: http://blog.csdn.net/hereiskxm/article/details/49664845  前言 最近在调研基于内容的用户行为分析,在过程中发现了word2vec这个 ...

  5. wiki中文文本语料下载,在维基百科中文语料训练Word2vec and doc2vec 文本向量化代码示例

    首先下载wiki中文语料(大约1.7G) https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ...

  6. python wiki中文语料分词

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

  7. 用opencc实现Wiki中文语料从繁体转换为简体

    1,我遇见问题的描述 我想通过opencc来实现Wiki中文语料从繁体转换为简体 2,解决方法 2.1 软件以及数据准备 我到https://bintray.com/package/files/byv ...

  8. wiki中文语料下载及繁体转简体的处理。

    wiki中文语料下载地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 下载后是xml的 ...

  9. gensim 中文语料训练 word2vec

    gensim 的word2vec api参见: https://radimrehurek.com/gensim/models/word2vec.html 本文说一下中文语料的使用,很简单. 1 wor ...

最新文章

  1. 批量更新日期字段中的年
  2. linux特殊符号大全
  3. linux 添加用户
  4. 初学者学用Github
  5. QGLViewer编译过程
  6. L1-004.计算摄氏温度
  7. oracle的等保,Oracle等保测评相关指令
  8. java洗牌_java语言实现简单的洗牌,发牌
  9. 基于C# 百度AI和科大汛飞语音合成SDK
  10. 渗透测试面试题汇总(全)
  11. Python爬虫——全网获取音乐
  12. 电路交换、报文交换和分组交换的区别
  13. win7 oem key
  14. 9.进程间通信的方式有哪些?各自的优缺点及应用选择?
  15. 【专利】如何画专利结构图纸
  16. android-smart-image-view图片加载简单使用
  17. 微信支付 android4.4,Android集成微信支付
  18. android+路由器+名称,手机更改路由器名称
  19. postman 搭建mock-server
  20. SQL 实验项目4-数据库安全性

热门文章

  1. 百度地图与 高德导航
  2. 高通骁龙平台芯片处理器(SoC)指南
  3. Unity解决动画不可用:The AnimationClip ‘XXX‘ used by the Animation component ‘XXX‘ must be marked as Legacy.
  4. golang 官方依赖管理工具 dep 使用和持续集成
  5. 【HTML】HTML网页设计---海贼王网页前端设计
  6. 大数据测试平台搭建记录(CDH集群)
  7. 基于matlab的小车在行驶过程中倒立摆的动态平衡控制器仿真
  8. 应用程序配置文件(.config)
  9. 多平台epub阅读器推荐
  10. 修改 Outlook 数据文件默认保存位置