训练中文词向量word2vec模型

1.准备数据

中文维基百科地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2;

搜狗全网新闻预料地址:http://www.sogou.com/labs/resource/ca.php;

中文维基百科是xml格式的压缩文件,有1G左右。下面仅以中文维基预料进行模型训练。

1.将xml文件转为text。执行命令:python process_wiki_data.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text

# process_wiki_data.py

# -*- coding: utf-8 -*-

import logging

import os.path

import sys

from gensim.corpora import WikiCorpus

if __name__ == '__main__':

program = 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))

# check and process input arguments

if len(sys.argv) < 3:

print(globals()['__doc__'] % locals())

sys.exit(1)

inp, outp = sys.argv[1:3]

space = " "

i = 0

output = open(outp, 'w', encoding='utf-8')

wiki = WikiCorpus(inp, lemmatize=False, dictionary={})

for text in wiki.get_texts():

output.write(space.join(text) + "\n")

i = i + 1

if (i % 10000 == 0):

logger.info("Saved " + str(i) + " articles")

output.close()

logger.info("Finished Saved " + str(i) + " articles")

``

![处理数据结果](https://img-blog.csdnimg.cn/20190806175953398.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpZXppXzEwMTU=,size_16,color_FFFFFF,t_70)

2.对变换格式后的预料进行分词处理(中文分词以jieba为例)命令:python word_seg.py

```javascript

# -*- coding: utf-8 -*-

# 逐行读取文件数据进行jieba分词

# word_seg.py

import jieba

import jieba.analyse

import jieba.posseg as pseg #引入词性标注接口

import codecs,sys

if __name__ == '__main__':

f = codecs.open('zhwiki.zh.text', 'r', encoding='utf8')

target = codecs.open('wiki.zh.text.seg', 'w', encoding='utf8')

print('open files.')

lineNum = 1

line = f.readline()

print("打印line:", line)

while line:

print('---processing ',lineNum,' article---')

seg_list = jieba.cut(line,cut_all=False)

line_seg = ' '.join(seg_list)

print("分词", line_seg)

target.writelines(line_seg)

lineNum = lineNum + 1

line = f.readline()

print('well done.')

f.close()

target.close()

3.使用分割后的预料进行模型的训练,命令:python word2vecmodel.py wiki.zh.text.seg wiki.zh.text.model wiki.zh.text.vector

# -*- coding: utf-8 -*-

# word2vecmodel.py用于训练模型

import logging

import os.path

import sys

import multiprocessing

from gensim.corpora import WikiCorpus

from gensim.models import Word2Vec

from gensim.models.word2vec import LineSentence

if __name__ == '__main__':

program = 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))

# check and process input arguments

if len(sys.argv) < 4:

print(globals()['__doc__'] % locals())

sys.exit(1)

inp, outp1, outp2 = sys.argv[1:4]

model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5,

workers=multiprocessing.cpu_count())

# trim unneeded model memory = use(much) less RAM

#model.init_sims(replace=True)

model.save(outp1)

model.save_word2vec_format(outp2, binary=False)

4.测试模型效果,命令:python testmodel.py

# coding: utf-8

# testmodel.py

import gensim

model = gensim.models.Word2Vec.load("wiki.zh.text.model")

model.init_sims(replace = True)

result = model.most_similar(u"足球")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"男人")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"女人")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"青蛙")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"姨夫")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"衣服")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"公安局")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"铁道部")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"清华大学")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"卫视")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"语言学")

for e in result:

print(e[0], e[1])

result = model.most_similar(u"计算机")

for e in result:

print(e[0], e[1])

model.similarity(u"计算机", u"自动化")

model.similarity(u"女人", u"男人")

model.doesnt_match(u"早餐 晚餐 午餐 中心".split())

print(model.doesnt_match(u"早餐 晚餐 午餐 中心".split()))

运行结果:

排球 0.6024000644683838

足球运动 0.599421501159668

冰球 0.5516613721847534

所遇问题:

Traceback (most recent call last):

File “”, line 1, in

File “/usr/local/lib/python2.7/dist-packages/gensim/utils.py”, line 1422, in new_func1

return func(*args, **kwargs)

File “/usr/local/lib/python2.7/dist-packages/gensim/models/base_any2vec.py”, line 1397, in most_similar

return self.wv.most_similar(positive, negative, topn, restrict_vocab, indexer)

File “/usr/local/lib/python2.7/dist-packages/gensim/models/keyedvectors.py”, line 509, in most_similar

self.init_sims()

File “/usr/local/lib/python2.7/dist-packages/gensim/models/keyedvectors.py”, line 1366, in init_sims

self.vectors_norm = (self.vectors / sqrt((self.vectors ** 2).sum(-1))[…, newaxis]).astype(REAL)

MemoryError

解决方案:

在加载完Word2Vec模型后,接着输入这一行命令:model.init_sims(replace = True)

原文链接:https://blog.csdn.net/xiezi_1015/article/details/98646193

python训练自己中文语料库_word2vec+维基百科语料库训练中文模型相关推荐

  1. 把一个dataset的表放在另一个dataset里面_使用中文维基百科语料库训练一个word2vec模型并使用说明...

    ​本篇主要介绍如何通过中文维基百科语料库来训练一个word2vec模型. 相关资料下载: 中文维基百科下载地址:https://dumps.wikimedia.org/zhwiki/ WikiExtr ...

  2. 使用中文维基百科语料库训练一个word2vec模型

    本篇文章主要介绍如何通过中文维基百科语料库来训练一个word2vec模型. 相关资料下载: 中文维基百科下载地址:https://dumps.wikimedia.org/zhwiki/20180720 ...

  3. 使用中文维基百科语料库训练一个word2vec模型 12.1

    转自:https://blog.csdn.net/sinat_29957455/article/details/81432846 本篇文章主要介绍如何通过中文维基百科语料库来训练一个word2vec模 ...

  4. 【Python爬虫】Python网络爬虫案例:维基百科

    Python网络爬虫案例:维基百科 1.项目描述 本案例的目标是爬取维基百科上的词条连接.爬虫深度设置为两层. 网络蜘蛛:是通过网页的链接地址寻找网页的,从网站某一个页面(通常是首页)开始读取网页的内 ...

  5. [python学习] 简单爬取维基百科程序语言消息盒

    文章主要讲述如何通过Python爬取维基百科的消息盒(Infobox),主要是通过正则表达式和urllib实现:后面的文章可能会讲述通过BeautifulSoup实现爬取网页知识.由于这方面的文章还是 ...

  6. python牛顿迭代法_python-来自维基百科示例的Gauss-Newton方法的实现

    我是Python的新手,正在尝试实现Gauss-Newton方法,特别是在Wikipedia页面上的示例(Gauss–Newton algorithm,第3个示例).以下是我到目前为止所做的: imp ...

  7. 使用中文维基百科训练word2vec模型

    一.下载原始数据 数据下载地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ,或者在这 ...

  8. Windows下维基百科中文语料库词向量训练

    Windows下维基百科中文语料库词向量训练 Garbage in,garbage out. ​ 自然语言处理中,词向量的处理尤为重要.而生成词向量的好坏往往取决于语料库的训练,所以,语料库的选择十分 ...

  9. 预训练词向量中文维基百科,英文斯坦福glove预训练的词向量下载

    中文预训练词向量--基于中文维基百科语料训练 英文预训练词向量--斯坦福glove预训练的词向量 百度云分享:https://pan.baidu.com/s/1UpZeuqlNMl6XtTB5la53 ...

最新文章

  1. python 获取excel文件内sheet名称列表
  2. seaborn系列 (12) | 增强箱图boxenplot()
  3. Spring Security 实战干货:OAuth2登录获取Token的核心逻辑
  4. 纳米计算机存储量,纳米计算-人们需要知道的一切!
  5. php deprecated,解决php中each函数在7.2版本提示deprecated错误问题
  6. 实战 | GitLab + Docker 实现多环境部署
  7. mysql建立外键快捷方式_mysql建立外键
  8. oracle中的数据读取与查找
  9. SpringBoot集成DM数据库
  10. 小程序容器进一步强化国家政务服务平台功能
  11. phantomjs自动截图生成图片
  12. 钢琴软件c语言源代码,C语言钢琴程序代码.doc
  13. 升级Mountain Lion系统后因为 “来自身份不明开发者” 不能打开某些软件的解决方法
  14. Python之 【模型建立和测试-模型测试模板】
  15. http://www.blogbus.com/eastsun-logs/7762285.html
  16. 错别字分析——自建错词库
  17. 用cygwin从本地向ubuntu某路径下传文件时Permission denied解决方法
  18. Go语言之Windows 10开发工具LiteIDE初步使用
  19. uwp html5,在UWP节省HTML5音频流MP3文件(In UWP saving HTML5 Audio stre
  20. ID生成方案之号段模式

热门文章

  1. python爬取胡歌相关视频弹幕,分析并制作词云
  2. 旷视科技经典文字检测EAST
  3. mysql5.7 主从切换_mysql5.7主从切换(master/slave switchover)
  4. AIIA-2021版《电信行业人工智能应用白皮书》
  5. 游戏开发物语安卓!Android彻底组件化方案实践方法!快来收藏!
  6. 1155低功耗cpu排行_比拼浮点运算速度,超算排行榜是这样“算”出来的
  7. SDH原理--2.SDH信号的帧结构
  8. 织梦模板安装后不能显示css的解决办法
  9. 计算机仿真初审多长时间,普刊初审时间多久有回复
  10. Vertica常用语法