阅读目录:

1. WikiCorpus提取xml数据集语料
2. opencc繁转简
3. jieba中文分词
4. word2vec词向量转化
5. 模型测试(相似度)


wiki数据集获取途径:点此进入按需获取
我这里为方便快捷,只下载了个10+M的数据集。


1. WikiCorpus提取wiki数据集语料

由于下载的xml格式的wiki数据集不能直接使用,因此需要将其中的语料内容进行提取。
此处用到gensim自带的WikiCorpus工具包

from gensim.corpora import WikiCorpusdef wiki_xml2txt_processing():i = 0input_file = "zhwiki.xml.bz2"output_file = "wiki_data.txt"wiki = WikiCorpus(input_file, lemmatize=False, dictionary={})output = open(output_file, 'w', encoding="utf-8")for text in wiki.get_texts():str_line = " ".join(text) + "\n"output.write(str_line)i += 1if (i % 100 ==0 ):print("Save "+str(i) + " articles")output.close()print("Finished saved " + str(i) + " articles")

lemmatize:是否用词行还原替代简单正则化表达式对语料进行标记。(默认True)
dictionary:是否使用字典。如果不填一个空字典,会将语料扫描一遍,由此时间会大大增加。(默认None)


2. opencc繁转简

我们查看部分数据可以得知有大量的繁体字,因此我们需要将其转化为简体,以便做后续的处理。
此处需要用到一个繁转简的工具OpenCC,点此进入按需获取
我的是win10,因此直接下载了win64版本的opencc。下载后解压,将待转化的文本复制入其路径,通过cmd命令行进行转化。

opencc -i wiki_data.txt -o wiki_data_2s.txt -c t2s.json

-i 输入文件
-o 输出文件
-c 所用工具词典


3.jieba中文分词

由于我们的是中文数据集,因此需将提取的数据进行分词。
此处直接采用广为人知的jieba分词工具

import jieba
import codecsdef wiki_data_cut_words():f = codecs.open('wiki_test.txt', 'r', encoding="utf8")target = codecs.open("wiki_data_seg.txt", "w", encoding='utf-8')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 += 1line = f.readline()f.close()target.close()

此处用到的codecs是一个Python的编解码库,其对多国语言的支持处理得非常好。
不过此处直接使用open函数也是可以的。


4. word2vec词向量转化

接下来开始进入词向量转化过程
此处直接采用流行的自然语言处理包gensim构建word2vec模型

import multiprocessing
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentencedata_file = "wiki_data_seg.txt"
model = Word2Vec(LineSentence(data_file), size=400, window=5, min_count=5, workers=multiprocessing.cpu_count())
model.save("wiki.zh.text.model")

首个参数:LineSentence自动将文本文件处理成句子式数据
size:词向量维度大小
window:句子中当前单词和被预测单词的最大距离
min_count:低频次阈值。滤除未超过此频次的词
(参数说明请点击)


5. 模型测试(相似度)

from gensim.models import Word2Vecmodel = Word2Vec.load("wiki.zh.text.model")test_words = ["中国", "数学", "科技", "苹果"]
for i in range(4):res = model.most_similar(test_words[i])print(test_words[i])print(res)

测试结果:

中国
[('大陆', 0.911636471748352), ('艺术', 0.905634880065918), ('美国', 0.9026761054992676), ('国家', 0.8981744647026062), ('上海', 0.8977940678596497), ('民主革命家', 0.897219717502594), ('英国', 0.8868845701217651), ('北京', 0.8763183355331421), ('香港', 0.8754881620407104), ('陪都', 0.8734786510467529)]
数学
[('化学', 0.9959410429000854), ('生物', 0.9923804998397827), ('文学', 0.9923375844955444), ('学', 0.9914088845252991), ('哲学', 0.9900380373001099), ('多样性', 0.9894265532493591), ('自动化', 0.9893380403518677), ('几何学', 0.9886542558670044), ('李菁', 0.9885188937187195), ('文章', 0.9875762462615967)]
科技
[('公共', 0.9896970987319946), ('民生', 0.9875539541244507), ('专案', 0.9874786138534546), ('海洋', 0.9865525960922241), ('基金', 0.9862356781959534), ('管理局', 0.9857953786849976), ('汉莎', 0.9846381545066833), ('复旦大学', 0.9845115542411804), ('图书馆', 0.9843970537185669), ('澳大利亚', 0.9841024279594421)]
苹果
[('热爱', 0.9914380311965942), ('挑战', 0.9880658984184265), ('深流院', 0.9880220293998718), ('援助', 0.9870332479476929), ('风纪', 0.9865298271179199), ('恶作剧', 0.9860354661941528), ('新型', 0.985931932926178), ('身材', 0.9859163761138916), ('格斗', 0.9858546257019043), ('谜团', 0.9857218861579895)]

由于数据集较小,效果并不尽人意。


完整源码及相关数据集和工具已置于GitHub中:https://github.com/Lijuce/wiki_data-gensim_word2vec

wiki中文数据语料抽取-gensim构建word2vec模型相关推荐

  1. 利用gensim构建word2vec词向量模型并保存词向量

    利用gensim包的word2vec模块构建CBOW或Skip-Gram模型来进行词向量化比较方便. 具体gensim.models.Word2Vec模型的参数可以看官网介绍: https://rad ...

  2. python word2vector训练wiki中文文本语料

    前两篇文章对wiki中文语料进行下载(wiki中文文本语料下载并处理 ubuntu + python2.7)和分词(python wiki中文语料分词),本篇使用word2vector训练词向量,训练 ...

  3. 基于gensim实现word2vec模型(附案例实战)

    目录 什么是word2vec? Word2Vec的原理 gensim实现word2vec模型(实战) 什么是word2vec? Word2Vec是google在2013年推出的一个NLP工具,它的特点 ...

  4. R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载、划分数据、并分别构建线性回归模型和广义线性加性模型GAMs、并比较线性模型和GAMs模型的性能

    R语言广义加性模型(GAMs:Generalized Additive Model)建模:数据加载.划分数据.并分别构建线性回归模型和广义线性加性模型GAMs.并比较线性模型和GAMs模型的性能 目录

  5. gensim 对wiki中文文本语料进行训练Word2vec

    gensim的安装 pip instll gensim 语料库的下载 gensim仅提供了Word2Vec的模型实现,训练词向量的另一个必须条件是足够大的文本语料.这里我们将要使用的是中文维基百科语料 ...

  6. wiki中文文本语料下载,在维基百科中文语料训练Word2vec and doc2vec 文本向量化代码示例

    首先下载wiki中文语料(大约1.7G) https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ...

  7. wiki中文文本语料下载并处理 ubuntu + python2.7

    首先下载wiki中文语料(大约1.7G) https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ...

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

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

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

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

最新文章

  1. 不少Java程序员都觉得Lambda表达式很鸡肋,它到底有何用呢?
  2. 死磕 java同步系列之ReentrantReadWriteLock源码解析
  3. javascript滚动文字
  4. nyoj 710 外星人的供给站
  5. C# WebBrowser触发onchange事件
  6. C语言链表为什么倒着输出,关于链表倒着存,正着输出。
  7. 十一、非规则组织分析及其数学模型——芦席斜纹组织
  8. java基础-BigDecimal类常用方法介绍
  9. java中.of,java中instanceof的用法
  10. Multi GET API介绍
  11. aria2c下载迅雷离线
  12. c++编码规范_汽车嵌入式软件测试——嵌入式软件标准及规范简介
  13. 使用cronolog自动分割apache的日志。
  14. java ftl 模板 输出list_关于在freemarker模板中遍历数据模型ListJavaBean的经验
  15. 怎样从excel随机抽取多行
  16. 研发项目wbs分解简单案例_wbs分解案例
  17. 林轩田《机器学习基石》(十一)—— Linear models for classification
  18. 基于非洲秃鹫优化算法的函数寻优算法
  19. Qt创建设计师自定义控件(Qt Designer自定义控件)
  20. FineBI 中 逻辑函数if 嵌套 没有else

热门文章

  1. GEE开发之Worldpop人口数据分析
  2. 【WEBRTC】ADM: rtc_include_internal_audio_device 触发 RTC_DCHECK(adm) 断言
  3. Jupyter Notebook安装代码提示、自动生成目录功能nbextensions
  4. Google MapReduce, Skeletons
  5. 计算机专业评估要求,高等学校计算机专业本科教育评估标准Ⅲ.计算机专业(应用型)评估指标...
  6. python批量修改doc文件
  7. 机器视觉设计者如何选择合适的镜头?
  8. 台式电脑组装机相关知识之显卡篇
  9. 服务器显示监控,服务器显示监控
  10. GitHub优质开源项目-电商类