维基百科中文语料库训练word2vec模型和使用总结
首先列明参考博文地址:
使用中文维基百科语料库训练一个word2vec模型并使用说明
windows使用opencc中文简体和繁体互转
使用中文维基百科训练word2vec模型
一、下载维基百科中文语料库
下载地址:https://dumps.wikimedia.org/zhwiki/
这里我选择的是20200801,下载第一个即可
二、语料库处理
1、使用WikiExtractor提取语料库文章
WikiExtractor项目git地址
直接根据说明安装,这里我直接pip
WikiExtractor是一个意大利人写的一个Python脚本专门用来提取维基百科语料库中的文章,将每个文件分割的大小为500M,它是一个通过cmd命令来设置一些参数提取文章。
先找出这个脚本,这个脚本是独立的,放于与语料库同一目录
然后cmd执行以下命令
python WikiExtractor.py -b 500M -o zhwiki zhwiki-20200801-pages-articles-multistream.xml.bz2
提取会产生一个AA文件夹,可以打开查看里边是一些文章
包含714万词条,113万文章
2、繁体转简体
上图发现提取的文章是简体繁体混杂,使用opencc统一转换为简体中文
从文章开头的博文中下载windows下可用的opencc并解压
其中share文件夹下的json文件就是opencc的配置文件,用于简繁体转换
接着在bin目录下cmd
命令格式:
opencc -i 需要转换的文件路径 -o 转换后的文件路径 -c 配置文件路径
这里我将转换后文件保存到BB目录下,t2s.json就是繁体转简体的文件
F:\opencc-1.0.4-win32\opencc-1.0.4\bin>opencc -i F:\wikibaike\zhwiki\AA\wiki_00 -o F:\wikibaike\zhwiki\BB\zh_wiki_00 -c F:\opencc-1.0.4-win32\opencc-1.0.4\share\opencc\t2s.json
三个文件都需要转换
3、提取文章并分词
将多余字符使用正则表达式去除并分词,3个文件都要执行一次
import logging,jieba,os,re
from gensim.models import word2vecdef get_stopwords():logging.basicConfig(format='%(asctime)s:%(levelname)s:%(message)s',level=logging.INFO)#加载停用词表stopword_set = set()with open("./data/stop_words.txt",'r',encoding="utf-8") as stopwords:for stopword in stopwords:stopword_set.add(stopword.strip("\n"))return stopword_set'''
使用正则表达式解析文本
'''
def parse_zhwiki(read_file_path,save_file_path):#过滤掉<doc>regex_str = "[^<doc.*>$]|[^</doc>$]"file = open(read_file_path,"r",encoding="utf-8")#写文件output = open(save_file_path,"w+",encoding="utf-8")content_line = file.readline()#获取停用词表stopwords = get_stopwords()#定义一个字符串变量,表示一篇文章的分词结果article_contents = ""while content_line:match_obj = re.match(regex_str,content_line)content_line = content_line.strip("\n")if len(content_line) > 0:if match_obj:#使用jieba进行分词words = jieba.cut(content_line,cut_all=False)for word in words:if word not in stopwords:article_contents += word+" "else:if len(article_contents) > 0:output.write(article_contents+"\n")article_contents = ""content_line = file.readline()output.close()if __name__ == '__main__':parse_zhwiki('F:\wikibaike\zhwiki\BB\zh_wiki_00', 'F:\wikibaike\zhwiki\CC\wiki_corpus00')
4、合并上边三个文件
'''
合并分词后的文件
'''
def merge_corpus():output = open("F:\wikibaike\zhwiki\CC\wiki_corpus","w",encoding="utf-8")input = "F:\wikibaike\zhwiki\CC"for i in range(3):file_path = os.path.join(input,str("wiki_corpus0%s"%str(i)))file = open(file_path,"r",encoding="utf-8")line = file.readline()while line:output.writelines(line)line = file.readline()file.close()output.close()
三、word2vec模型训练
我的训练过程需要40分钟,迭代了5次
# 训练模型
def main():logging.basicConfig(format="%(asctime)s:%(levelname)s:%(message)s",level=logging.INFO)sentences = word2vec.LineSentence("F:\wikibaike\zhwiki\CC\wiki_corpus")# size:单词向量的维度。model = word2vec.Word2Vec(sentences,size=250)#保存模型model.save("F:\wikibaike\model\wiki_corpus.bin")
训练好的模型包含3个文件
四、模型使用
import logging
from gensim import models# 使用word2vec模型
# 打印日志
logging.basicConfig(format="%(asctime)s:%(levelname)s:%(message)s",level=logging.INFO)
# 加载模型
model = models.Word2Vec.load("./model/wiki_corpus.bin")# 找出 与指定词相似的词
#输入一个词找出相似的前10个词
def top10():one_corpus = ["人工智能"]# ''' 词库中与one_corpus最相似的10个词'''result = model.most_similar(one_corpus[0],topn=10)for i, res in enumerate(result):print(i, ':', res)# 计算两个词的相似度
def similar():# #输入两个词计算相似度two_corpus = ["腾讯", "阿里巴巴"]res = model.similarity(two_corpus[0], two_corpus[1])print("similarity:%.4f" % res)if __name__ == '__main__':similar()
参考博文
维基百科中文语料库训练word2vec模型和使用总结相关推荐
- python训练自己中文语料库_word2vec+维基百科语料库训练中文模型
训练中文词向量word2vec模型 1.准备数据 中文维基百科地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-arti ...
- 把一个dataset的表放在另一个dataset里面_使用中文维基百科语料库训练一个word2vec模型并使用说明...
本篇主要介绍如何通过中文维基百科语料库来训练一个word2vec模型. 相关资料下载: 中文维基百科下载地址:https://dumps.wikimedia.org/zhwiki/ WikiExtr ...
- 使用中文维基百科语料库训练一个word2vec模型
本篇文章主要介绍如何通过中文维基百科语料库来训练一个word2vec模型. 相关资料下载: 中文维基百科下载地址:https://dumps.wikimedia.org/zhwiki/20180720 ...
- 使用中文维基百科语料库训练一个word2vec模型 12.1
转自:https://blog.csdn.net/sinat_29957455/article/details/81432846 本篇文章主要介绍如何通过中文维基百科语料库来训练一个word2vec模 ...
- 使用中文维基百科训练word2vec模型的最新方法!
网上看了很多其他博客,发现有些部分都太老旧了,以至于现在套用都错误百出...这里总结了一下使用中文维基百科训练word2vec模型的最新方法. 参考链接: https://blog.csdn.net/ ...
- 使用中文维基百科训练word2vec模型
一.下载原始数据 数据下载地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2 ,或者在这 ...
- Windows下维基百科中文语料库词向量训练
Windows下维基百科中文语料库词向量训练 Garbage in,garbage out. 自然语言处理中,词向量的处理尤为重要.而生成词向量的好坏往往取决于语料库的训练,所以,语料库的选择十分 ...
- 多进程使用wikimedia数据训练word2vec模型
语料库下载: 请参考:https://blog.csdn.net/weixin_35757704/article/details/115614112 1.训练Word2vec模型代码 单单使用gens ...
- 是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)?
是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)? http://www.voidcn.com/artic ...
- gensim流式训练word2vec模型,不需要一次性加载完整数据集
首先训练文本train_text.txt文件内容如下: 优惠的政策和政府对产业发展的重视也吸引了更多医美企业来成都寻觅机遇.2018年成都医美机构的数量一度飙升至407家,较之前一年激增131家 中国 ...
最新文章
- IoC容器总结与简单模拟
- php-5.6.26源代码 - opcode执行
- Java学习笔记之 IO包 字节流
- 前端开发 元素的浮动 文字环饶效果 横向排列效果 0229
- 中世纪判断女巫的方法总结
- 移动应用程序框架Kendo UI Mobile发布R2 2016 SP2
- 如何成为一名真正专业的程序员
- win10安装sshpass_安装sshpass
- 分析nmn抗衰老的真实性,nmn的效果到底怎么样
- 超高颜值高性价比蓝牙耳机,2021学生党最爱平价蓝牙耳机推荐
- 哥德巴赫猜想验证-循环
- mt4电脑版如何下载安装
- USES_CONVERSION宏定义
- 前端图片处理 - Photoshop压缩照片 / collagelt轻松拼接照片墙
- zabbix分布式应用和微信报警
- 【力扣周赛】第346场周赛
- 产品经理从专能到全能——似懂非懂的分辨率
- 禁用笔记本触控板驱动,禁用联想笔记本触控板驱动,Alps Touch pad 驱动
- 银行科技岗是程序员比较好的就业选择么?
- Epson机器人程序执行相关命令