windows下使用word2vec训练维基百科中文语料全攻略!(二)

训练一个聊天机器人的很重要的一步是词向量训练,无论是生成式聊天机器人还是检索式聊天机器人,都需要将文字转化为词向量,时下最火的词向量训练模型是word2vec,所以,今天小编文文带你使用维基百科训练词向量。

4、繁简转换

上一篇中讲到了将文档从xml中抽取出来,下一步是将繁体字转换为简体字,那么我们使用opencc工具进行繁简转换,首先去下载opencc:https://bintray.com/package/files/byvoid/opencc/OpenCC 下载完成之后解压即可,随后使用命令: opencc -i wiki.zh.text -o wiki.zh.jian.text -c t2s.json进行转换 效果如下:

转换前-繁体

转换后-简体

5、文章分词:

使用jieba分词器对文章及进行分词,代码如下:

import jiebaimport jieba.analyseimport jieba.posseg as psegimport codecs,sys
def cut_words(sentence):
    #print sentence    return " ".join(jieba.cut(sentence)).encode('utf-8')
f=codecs.open('wiki.zh.jian.text','r',encoding="utf8")
target = codecs.open("wiki.zh.jian.seg.txt", 'w',encoding="utf8")print ('open files')
line_num=1line = f.readline()while line:    print('---- processing', line_num, 'article----------------')
    line_seg = " ".join(jieba.cut(line))
    target.writelines(line_seg)
    line_num = line_num + 1
    line = f.readline()
f.close()
target.close()exit()while line:
    curr = []    for oneline in line:
        #print(oneline)
        curr.append(oneline)
    after_cut = map(cut_words, curr)
    target.writelines(after_cut)    print ('saved',line_num,'articles')    exit()    line = f.readline1()
f.close()
target.close()

6、训练词向量

接下来就可以训练词向量啦,代码如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-import loggingimport osimport sysimport multiprocessing

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentenceif __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(),iter=100)

    # trim unneeded model memory = use(much) less RAM
    # model.init_sims(replace=True)
    model.save(outp1)
    model.wv.save_word2vec_format(outp2, binary=False)

使用命令开始训练 python train_word2vec_model.py wiki.zh.jian.seg.txt wiki.zh.text.model wiki.zh.text.vector 发现训练开始:

今天先记录到这里啦,下一篇,小编带你一起体验一下word2vec的训练结果。

原文发布于微信公众号 - 小小挖掘机(wAIsjwj)

原文发表时间:2017-06-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吉浦迅科技

cuDNN和NCCL

在Training方面比较重要的库是cuDNN。cuDNN是深度学习基础模块加速库,可以支持所有主流的深度学习框架,比如Caffe、Tensorflow、CNT...

76112
来自专栏数据小魔方

sparklines迷你图系列18——ScatterChart

今天跟大家分享sparklines迷你图系列17——ScatterChart。 ScatterChart是日常使用频率非常频繁的图表——条形图。 在迷你图插件的...

2664
来自专栏图形学与OpenGL

机械版CG 实验5 Bezier曲线

了解曲线的生成原理,掌握几种常见的曲线生成算法,利用VC+OpenGL实现Bezier曲线生成算法。

1013
来自专栏PPV课数据科学社区

基于Libsvm的图像分类

关于Libsvm的废话 基于Libsvm的图像分类实例 说说图像分类的处理结果 1. 关于Libsvm的废话 先来一段废话,大家有心情看看就行,那就是关于支持...

3524
来自专栏大数据挖掘DT机器学习

Python机器学习库scikit-learn实践

一、概述 以最广泛的分类算法为例,大致可以分为线性和非线性两大派别。线性算法有著名的逻辑回归、朴素贝叶斯、最大熵等,非线性算法有随机森林、决策树、神经网络、核...

3675
来自专栏深度学习那些事儿

浅谈深度学习中超参数调整策略

深度学习中,设计模型以及保证模型的正确性是首要需要考虑的。当模型设置完成时,理论上模型不存在问题,实现效果也通过计算可以复现出来。一切准备就绪后,那么接下来需要...

1985
来自专栏申龙斌的程序人生

零基础学编程037:小数据分析

R语言内置强大的向量运算,是搞数据分析的强大的编程语言,而Python也毫不逊色。今天就试着分析一下考试成绩表中两门科目的相关性。 问题描述: 有一个CSV文件...

3519
来自专栏机器学习人工学weekly

机器学习人工学weekly-2018/5/20

Dynamic Control Flow in Large-Scale Machine Learning

1056
来自专栏从流域到海域

A Gentle Introduction to Autocorrelation and Partial Autocorrelation (译文)

A Gentle Introduction to Autocorrelation and Partial Autocorrelation 自相关和偏自相关的简单...

3016
来自专栏AI科技大本营的专栏

无人驾驶汽车系统入门:基于深度学习的实时激光雷达点云目标检测及ROS实现

近年来,随着深度学习在图像视觉领域的发展,一类基于单纯的深度学习模型的点云目标检测方法被提出和应用,本文将详细介绍其中一种模型——SqueezeSeg,并且使用...

2171

扫码关注云+社区

领取腾讯云代金券