1. 环境及语料

1.1 环境

  • Homebrew
  • Python
  • jieba分词库
  • gensim库

1.2 下载维基百科语料

从这个链接下载http://download.wikipedia.com/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2
本文只使用中文WiKi进行Word2Vec实验,英文的Wiki比较好处理,不用使用分词库就可以完成处理。

1.3 安装opencc

opencc用来进行繁体和简体转换
命令:brew install opencc

2. 实验

2.1 转换格式

将下载下来的Wiki XML文件转换成TXT格式文件,运行如下脚本。在Terminal中执行:python parse_wiki_corpora.py zhwiki-latest-pages-articles.xml.bz2 corpus.zhwiki.txt

import logging
import os.path
import sys
from gensim.corpora import WikiCorpusif __name__ == '__main__':program = os.path.basename(__file__)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))if len(sys.argv) < 3:print (globals()['__doc__'] % locals())sys.exit(1)inp, outp = sys.argv[1:3]space = " "i = 0output = open(outp, 'w')wiki = WikiCorpus(inp, lemmatize=False, dictionary={})for text in wiki.get_texts():output.write(space.join(text) + "\n")i += 1if i % 10000 == 0:logger.info("Saved " + str(i) + " articles")output.close()logger.info("Finished Saved " + str(i) + " articles")

2.2 简繁体转换

命令: opencc -i corpus.zhwiki.txt -o corpus.zhwiki.simplified.txt -c t2s.json
转换其他字体,可参考https://github.com/BYVoid/OpenCC#configurations-%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6 修改上面命令的-c部分。

2.3 移除空白行

执行如下脚本。命令:python remove_en_blank.py corpus.zhwiki.simplified.txt corpus.zhwiki.simplified.done.txt

import re
import logging
import os.path
import sysif __name__ == '__main__':# program = os.path.basename(sys.argv[0])program = os.path.basename(__file__)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 argumentsif len(sys.argv) < 3:print(globals()['__doc__'] % locals())sys.exit(1)inp, outp = sys.argv[1:3]i = 0output = open(outp, 'w')f = open(inp)line = f.readline()while line:line = f.readline()rule = re.compile(r'[ a-zA-z]')  # delete english char and blankresult = rule.sub('', line)output.write(result + "\n")i += 1logger.info("Saved " + str(i) + " lines")f.close()output.close()logger.info("Finished Saved " + str(i) + " lines")

2.4 分词

使用jieba进行分词。执行如下脚本,命令:python -m jieba -d ’ ’ corpus.zhwiki.simplified.done.txt > corpus.zhwiki.segwithb.txt
注意英文引号和导出符>

2.5 Training

运行如下脚本,命令:python train.py corpus.zhwiki.segwithb.txt zhiwiki.model

# -*- coding: utf-8 -*-import logging
import os.path
import sys
import multiprocessing
from gensim.corpora import WikiCorpus
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentenceif __name__ == '__main__':# program = os.path.basename(sys.argv[0])program = os.path.basename(__file__)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 argumentsif len(sys.argv) < 3:print(globals()['__doc__'] % locals())sys.exit(1)inp, outp = sys.argv[1:3]model = Word2Vec(LineSentence(inp), size=400, window=5, min_count=5,workers=multiprocessing.cpu_count())model.save(outp)# model.save_word2vec_format(outp2, binary=False)

2.6 Testing

使用如下脚本进行测试,命令:python test.py

from gensim.models import Word2Vecmodel = Word2Vec.load('zhwiki.model')print(model.most_similar(u'中国', topn=20))
print(model.most_similar(u'北京', topn=20)

3. Word2Vec 存在的问题

  • 对每个local Context window单独训练,没有利用包含在global co-currence矩阵中的统计信息
  • 对多义词无法很好的表示和处理,因为使用了唯一的词向量
  • 一种更好的方法是使用GloVe进行词向量表示

4. Word2Vec 与 GloVe

4.1 Word2Vec中的 CBOW 和 SK-gram 如何选择?

样本量不是特别大的时候,选择CBOW;样本量特别大的时候应该选择SK-gram

4.2 Word2Vec 和 GloVe 对比

GloVe随着迭代次数增加,精度提升。Word2Vec 未使用类似迭代次数的Epoch,用Negative Samples 模拟

使用中文维基百科进行Word2Vec实验相关推荐

  1. NLP之word2vec:利用 Wikipedia Text(中文维基百科)语料+Word2vec工具来训练简体中文词向量

    NLP之word2vec:利用 Wikipedia Text(中文维基百科)语料+Word2vec工具来训练简体中文词向量 目录 输出结果 设计思路 1.Wikipedia Text语料来源 2.维基 ...

  2. 使用中文维基百科训练word2vec模型的最新方法!

    网上看了很多其他博客,发现有些部分都太老旧了,以至于现在套用都错误百出...这里总结了一下使用中文维基百科训练word2vec模型的最新方法. 参考链接: https://blog.csdn.net/ ...

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

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

  4. 中文维基百科语料上的Word2Vec实验

    说明:此文主要参考52nlp-中英文维基百科语料上的Word2Vec实验,按照上面的步骤来做的,略有改动,因此不完全是转载的.这里,为了方便大家可以更快地运行gensim中的word2vec模型,我提 ...

  5. Word2vec训练中文维基百科

    1.取得中文维基百科数据,本实验用的数据是zhwiki-20180320-pages-articles-multistream.xml.bz2 也可以前往维基百科数据获取下载最新的数据.(请挑选以pa ...

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

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

  7. Windows下基于python3使用word2vec训练中文维基百科语料资料汇总

    Windows下基于python3使用word2vec训练中文维基百科语料(一):https://www.cnblogs.com/gaofighting/p/9055674.html Windows下 ...

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

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

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

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

最新文章

  1. centos7执行sh文件_一文看懂centos7如何管理自定义脚本服务
  2. Python编程专属骚技巧10
  3. vue --- 获取子组件数据的一个应急方案$refs
  4. Java实现复数Complex的加减乘除运算、取模、求幅角角度
  5. 玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)
  6. 简单的线程同步问题:两个线程交替执行N次【Synchronized、Lock、ArrayBlockingQueue】...
  7. 浏览器 CSS Hack 收集
  8. centos7安装gitlab_Docker常用镜像安装:MySql Redis GitLab maven私服等
  9. arcgis for android 无法加载本地jpg影像解决办法
  10. 深度学习---循环神经网络RNN详解(LSTM)
  11. 阿里巴巴2020首发136道Java高级岗面试题(含答案)
  12. excel自动填充下方相同数据
  13. Redis更新数据的时候如何不重置过期时间
  14. hikaricp使用
  15. 2021-6-25 组态王与modbus rtu从机STM32精英开发板通信
  16. Rhythmbox 下中文的音乐文件显示成乱码解决办法
  17. 让Mac文本编辑器成为HTML编辑器
  18. JAVA 获取mac地址
  19. 教你前端如何用js写一个跑酷小游戏
  20. centos 之网络配置

热门文章

  1. 学习日志------手机测试工具,随身调GT
  2. 影响小红书KOL报价的4大因素,小红书品牌方推广投放经验分享
  3. java/php/net/python幼儿早教管理系统设计
  4. List系列集合、泛型、Set系列集合、Collection系列集合使用场景总结
  5. CQUPT Java平时作业02
  6. 3dmax2021 按空格键卡死 win10
  7. 怎么判断间隙过渡过盈配合_间隙配合 过盈配合 过渡配合的使用场合?
  8. Android10关闭过渡动画缩放
  9. python 当当京东比价
  10. 医学影像大数据与智能医疗