维基百科中文语料库训练word2vec模型和使用总结

article/2025/10/13 12:00:05

首先列明参考博文地址:
使用中文维基百科语料库训练一个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()

参考博文


http://chatgpt.dhexx.cn/article/iegLoIxj.shtml

相关文章

Windows下使用Glove训练自己的中文语料库

一、 准备自己的语料库 使用爬虫爬取数据&#xff0c;爬取之后的中文文本数据不能直接使用&#xff0c;需要进行分词&#xff0c;分完词后保存为data.txt&#xff08;这是我爬取的豆瓣影评的数据&#xff09; 二、下载Glove代码 https://github.com/stanfordnlp/GloVe 将数…

NLP浅谈语料库

NLP浅谈语料库 1. 浅谈语料库 1.1 语料和语料库 ​ 语料通常指在统计自然语言处理中实际上不可能观测到大规模的语言实例。所以人们简单地用文本作为替代&#xff0c;并把文本中的上下文关系作为现实世界中语言的上下文关系的替代品。 ​ 语料库一词在语言学上意指大量的文…

python使用nltk进行中文语料库的词频分布统计

文章目录 问题描述构建语料库统计字数统计词频分布 问题描述 根据给定的语料库&#xff0c;统计其中共包含多少字、平均每个词使用了多少次以及常用词的分布以及累计分布情况。 本文就以大秦帝国第一部小说为例进行实验 本文可以使用在毕业设计中&#xff0c;如果有帮助采用请…

中文分词多领域语料库

中文分词多领域语料库 数据处理 各位NLPer&#xff0c;大家好&#xff01; 如果你还在从事中文分词领域的相关研究&#xff0c;你一定会发现&#xff0c;随着时间推移&#xff0c;中文分词的研究越来越少&#xff0c;BERT出现后&#xff0c;以字为粒度的方法盛行&#xff0c;有…

python训练自己中文语料库_自然语言处理——NLTK中文语料库语料库

Python NLTK库中包含着大量的语料库,但是大部分都是英文,不过有一个Sinica(中央研究院)提供的繁体中文语料库,值得我们注意。 在使用这个语料库之前,我们首先要检查一下是否已经安装了这个语料库。 >>>import nltk >>>nltk.download() 检查箭头所指…

python 提取sogou中文语料库

sogou中文语料库下载地址是&#xff1a;https://download.csdn.net/download/kinas2u/1277550 下载下来的文件包含了很多子文件夹&#xff0c;每个子文件夹下又包含了很多txt语料文件&#xff0c;我想把他们都整合到一个txt中&#xff08;./SogouC_mini_20061102/Sample&#x…

python训练自己中文语料库_中文语料库构建过程详细教程

简介 今天我想简单记录一下自己构建语料库的过程, 方便自己查看和方便协作. 在工作中我们经常遇到一个问题就是每个研究者都有自己的语料库, 存储格式不同, 有用mysql这种结构化数据库的, 也有mogodb这种文档型数据库, 还有更多的是使用文本文件, 不管哪种形式, 都会导致数据交…

15个国内常用语料库

通用单语语料库 01. 国家语委现代汉语通用平衡语料库 http://www.aihanyu.org/cncorpus/index.aspx 该语料库是由国家语言文字工作委员会主持&#xff0c;面向语言文字信息处理、语言文字规范和标准的制定、语言文字的学术研究、语文教育以及语言文字的社会应用&#xff0c;…

latex中文简历,硕博士找工作实习用,顶级简约简历

*转载请注明出处&#xff0c;谢谢&#xff01; *latex自制简历演示,前言本篇文章介绍一下如何利用,制作一份简单的个人简历。文章目的并不是给大家提供模板&#xff0c;而是希望大家通过本篇文章的介绍&#xff0c;对制作个人简历的过程有个简单的了解&#xff0c;有所启发。代…

分享一个Latex一页纸简历模板(中英文)

分享一个Latex一页纸简历模板&#xff08;中英文&#xff09; 近期鉴于需要想找一份中文版的latex简历模板。tex模板支持中文一直是新手的心头痛&#xff0c;笔者希望能找到一份无痛支持中文的模板&#xff0c;最终在GitHub上找到了billryan制作的模板&#xff0c;链接在全文的…

硕士博士简历latex模板

找工作找实习&#xff0c;技术类的&#xff0c;简洁版&#xff0c;简历模板 模板下载地址&#xff1a;https://download.csdn.net/download/qq_25379821/10799422 使用注意事项: 我使用的编辑器是 Texworks 注意把环境改成system&#xff0c;否则中文显示乱码

一个LaTeX论文模板

文章目录 $\LaTeX$源码模板效果图 LaTeX \LaTeX LATE​X源码 % -*- coding: UTF-8 -*- \documentclass[UTF8]{ctexart} \usepackage{multicol} %数学包&#xff0c;这里没用到 %\usepackage{amsmath} \usepackage{indentfirst} %添加作者信息 \usepackage{authblk} \usepackag…

安装R包的几种方法(汇总)

以下载ggplot包为例 1. 在R studio界面中直接输入函数&#xff1a; install.packages("ggplot") #直接输入R包的名字即可。 2. 找不到无法下载的包&#xff0c;可以上Github官网搜索&#xff0c;上面会提供下载方法&#xff1a; 3. 将包下载到本地后&#xff0c;进行…

R: R package安装的几种方式

R包安装方式 一、CRAN安装二、Bioconductor安装三、Github安装四、手动安装 一、CRAN安装 对于大多数R包或可以在R官网上查询到的包&#xff0c;都可以直接进行安装。 直接利用代码安装 install packages("R包的名称") 从R—packages界面搜索安装 在第3步中输入R包…

R安装与卸载、RStudio安装

R及RStudio安装、R卸载 R下载R安装Rstudio下载RStudio安装R卸载 RStudio只是辅助使用R进行编辑的工具&#xff0c;所以RStudio的正常使用需以R程序为基础&#xff0c;安装过R的可以跳过前两步 R下载 官网 点击download R。 点击选择清华大学的镜像地址 R安装 任意选择一个&…

RStudio的安装

安装RStudio教程 &#xff08;如果下面的博客没有能解决你的问题或者你还有其他关于计算机方面的问题需要咨询可以加博主QQ&#xff1a;1732501467&#xff09; 安装RStudio&#xff0c;总共分为三步&#xff1a; 一、安装R安装包 二、安装RStudio 三、测试RStudio是否安装…

R与RStudio的详细安装教程(有每一步的详细教程!!!!)

R与RStudio的详细安装教程 R是RStudio的前提&#xff0c;首先安装R&#xff0c;才能安装RStudio。 安装R教程总共分为三步&#xff1a; 一、下载R安装包 二、安装R 三、打开R 安装RStudio&#xff0c;总共分为两步&#xff1a; 一、安装RStudio 二、测试RStudio是否安装…

什么是mysql锁表

为何会锁表 首先我们了解一下数据库查询机制&#xff0c;首先我们用工具进行连接查询时&#xff0c;会创建一个connection&#xff0c;此时数据库会将查询语句解析成一棵“树”&#xff0c;各个引擎底层的结构不一样&#xff0c;mysql的话在innodb用的是b-tree&#xff0c;俗称…

MySQL-锁表和解锁

介绍 锁是计算机协调多个进程或线程并发访问某一资源的机制。锁保证数据并发访问的一致性、有效性&#xff1b;锁冲突也是影响数据库并发访问性能的一个重要因素。锁是Mysql在服务器层和存储引擎层的的并发控制。 加锁是消耗资源的&#xff0c;锁的各种操作&#xff0c;包括获…

MySQL锁表了怎么办?

发生表锁的一些原因 1、锁表发生在insert update 、delete 中 2、锁表的原理是 数据库使用独占式封锁机制&#xff0c;当执行上面的语句时&#xff0c;对表进行锁住&#xff0c;直到发生commite 或者 回滚 或者退出数据库用户 3、锁表的原因 第一、 A程序执行了对 tab…