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


全文共454个字,3张图,预计阅读时间5分钟


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


繁简转换

上一篇中讲到了将文档从xml中抽取出来,下一步是将繁体字转换为简体字,那么我们使用opencc工具进行繁简转换,首先去下载opencc:https://bintray.com/package/files/byvoid/opencc/OpenCC


下载完成之后解压即可,随后使用命令:
opencc -i wiki.zh.text -o wiki.zh.jian.text -c t2s.json进行转换


效果如下:

640?wx_fmt=jpeg

转换前-繁体


转换后-简体


文章分词


使用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()


训练词向量


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


#!/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=400window=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


发现训练开始:


640?wx_fmt=jpeg


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


原文链接:https://mp.weixin.qq.com/s?__biz=MzI1MzY0MzE4Mg==&mid=2247483731&idx=1&sn=136ac6a32463d1fd68de51e59988c5ab&chksm=e9d01192dea798848db843e29f7086cc6b1ffd5caf0808111658859d7657ad8c4a2ed27a66b1&scene=21#wechat_redirect


查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org


请关注人工智能LeadAI公众号,查看更多专业文章

640?wx_fmt=jpeg

大家都在看

640.png?


LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

猜你喜欢

转载自blog.csdn.net/leadai/article/details/86285785
今日推荐