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


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


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


训练数据下载


我们使用维基百科训练词向量,维基百科数据的下载地址为:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2。
下载后无需解压,中文维基百科的数据比较小,整个xml的压缩文件大约才1G


安装依赖库


下载数据之后,网上提供了现成的程序对xml进行解压,在网上找到了一个解析xml的py文件,命名为process_wiki.py。不过还需要对其进行修改,将原有的output = open(outp, 'w'),修改为output = open(outp, 'w',encoding='utf-8')


否则会报下图的错误:


640?wx_fmt=png


在放完整的代码之前,我们需要安装一些依赖库,有numpy、scipy以及gensim,安装gensim依赖于scipy,安装scipy依赖于numpy。我们直接用pip安装numpy,在windows命令行下使用命令:
pip install numpy


成功安装numpy之后安装scipy,仍然使用命令pip install scipy,此时却发现报错了,其实,一般都会报错,正确的打开方式是去网站下载whl,再进行安装,去如下的网址下载scipy包:
http://www.lfd.uci.edu/~gohlke/pythonlibs/


找到相应版本的:

640?wx_fmt=png


下载好之后使用pip命令安装即可:
pip install scipy-0.19.0-cp35-cp35m-win_amd64.whl
接下来使用命令 pip install gensim 即可。


将xml的wiki数据转换为text格式


使用下面的代码对数据进行处理,命名为process_wiki.py,这个代码是python2和python3通用的:


from __future__ import print_function

import logging
import os.path
import six
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("Using: python process_wiki.py enwiki.xxx.xml.bz2 wiki.en.text")
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():
if six.PY3:
    output.write(b' '.join(text).decode('utf-8') + '\n')
# ###another method###
#    output.write(
#            space.join(map(lambda x:x.decode("utf-8"), text)) + '\n')
else:
    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")


使用如下的命令执行代码:

python process_wiki.py zhwiki-latest-pages-articles.xml.bz2 wiki.zh.text


不过发现报错了:

640?wx_fmt=png


这是因为我们的numpy版本不对,所以我们首先要使用pip卸载掉我们当前的numpy,然后去网站:http://www.lfd.uci.edu/~gohlke/pythonlibs/

下载对应的numpy版本并安装即可:


640?wx_fmt=png


随后使用刚才的命令执行,发现执行成功:

640?wx_fmt=png


好啦,今天的实验就先做到这里,明天咱们继续!


原文链接:https://mp.weixin.qq.com/s?__biz=MzI1MzY0MzE4Mg==&mid=2247483721&idx=1&sn=421544e6fcec861862ae679fafeca849&chksm=e9d01188dea7989e6d1060cf65390d03d605f085636ba86ae3763810b3256414b1efabd0f775&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/86215117
今日推荐