一、原理
word2vec原理部分有大神已经写好的,此处给出链接方便查看:
http://www.cnblogs.com/pinard/p/7160330.html
https://blog.csdn.net/lyc_yongcai/article/details/73275229
二、中文维基百科语料上的Word2Vec实验
参考:https://www.jianshu.com/p/ec27062bd453
https://blog.csdn.net/sinat_36972314/article/details/79637788
http://www.52nlp.cn/%E4%B8%AD%E8%8B%B1%E6%96%87%E7%BB%B4%E5%9F%BA%E7%99%BE%E7%A7%91%E8%AF%AD%E6%96%99%E4%B8%8A%E7%9A%84word2vec%E5%AE%9E%E9%AA%8C
1、 开发环境准备
1.1 python环境
在python官网下载计算机对应的python版本,本人使用的是windows下Python3.6.0的版本。
1.2 gensim模块
(1)下载模块
Word2vec需要使用第三方gensim模块, gensim模块依赖numpy和scipy两个包,因此需要依次下载对应版本的numpy、scipy、gensim。下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/
(2)安装模块
cmd打开dos命令行,输入 pip install numpy 、pip install scipy、pip install gensim
输入Python,在python环境下输入import numpy 、import scipy 、import gensim不报错则安装成功
2、 python 实现
2.1 Wiki中文数据的下载
到wiki官网下载中文语料,下载完成后会得到命名为zhwiki-latest-pages-articles.xml.bz2的文件,大小约为1.4G,里面是一个XML文件。
下载地址如下:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2
2.2 将XML的Wiki数据转换为text格式
编写python程序将XML文件转换为text格式,使用到了gensim.corpora中的WikiCorpus函数来处理维基百科的数据。python代码实现如下所示,文件命名为process_wiki.py。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#将xml的wiki数据转换为text格式
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')
output = open(outp, 'w',encoding='utf-8') #不加编码方式在处理时会出错
wiki = WikiCorpus(inp, lemmatize=False, dictionary={})
for text in wiki.get_texts(): #通过get_texts将维基里的每篇文章转换