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

article/2025/10/13 11:59:16

一、 准备自己的语料库

使用爬虫爬取数据,爬取之后的中文文本数据不能直接使用,需要进行分词,分完词后保存为data.txt(这是我爬取的豆瓣影评的数据)
在这里插入图片描述

二、下载Glove代码

https://github.com/stanfordnlp/GloVe
将数据data.txt保存在Glove的主文件夹下
在这里插入图片描述

三、修改bash

打开 demo.sh,修改相应的内容
修改如下:
在这里插入图片描述
因为demo默认是下载网上的语料来训练的,如果想要训练自己的语料,就需要注释掉,并且把语料替换掉,修改如下:
在这里插入图片描述
下边的代码,原来是这样的:

echo
echo "$ $BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE"
$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE
echo "$ $BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE"
$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILE
echo "$ $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE"
$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE
echo "$ $BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE"
$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSE
if [ "$CORPUS" = 'text8' ]; thenif [ "$1" = 'matlab' ]; thenmatlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2elif [ "$1" = 'octave' ]; thenoctave < ./eval/octave/read_and_evaluate_octave.m 1>&2elseecho "$ $PYTHON eval/python/evaluate.py"$PYTHON eval/python/evaluate.pyfi
fi

现修改成这样的:

$BUILDDIR/vocab_count -min-count $VOCAB_MIN_COUNT -verbose $VERBOSE < $CORPUS > $VOCAB_FILE
if [[ $? -eq 0 ]]then$BUILDDIR/cooccur -memory $MEMORY -vocab-file $VOCAB_FILE -verbose $VERBOSE -window-size $WINDOW_SIZE < $CORPUS > $COOCCURRENCE_FILEif [[ $? -eq 0 ]]then$BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILEif [[ $? -eq 0 ]]then$BUILDDIR/glove -save-file $SAVE_FILE -threads $NUM_THREADS -input-file $COOCCURRENCE_SHUF_FILE -x-max $X_MAX -iter $MAX_ITER -vector-size $VECTOR_SIZE -binary $BINARY -vocab-file $VOCAB_FILE -verbose $VERBOSEif [[ $? -eq 0 ]]thenif [ "$1" = 'matlab' ]; thenmatlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2elif [ "$1" = 'octave' ]; thenoctave < ./eval/octave/read_and_evaluate_octave.m 1>&2elsepython eval/python/evaluate.pyfifififi
fi

四、训练模型

训练模型需要注意Glove支持在linux下运行,因此需要安装一个可以在windows下用linux的环境。只需安装Cygwin,在页面中下载setup-x86_64.exe就可以了。
3.1 安装Cygwin步骤
在这里插入图片描述
在这里插入图片描述
注意这一步 Browser选择你想安装的位置,然后点下一步。
在这里插入图片描述
在这里插入图片描述
在这里选择一个好用的镜像,比如aliyun.com,然后点击下一步。
在这里插入图片描述
再然后,开始安装我们需要的组件,也可以把所有的组件都安装上,但是后面安装的时候很耗时间,所以,我们只需要安装若干个很常用的就行了,我们必须安装的有:gcc,g++,make,tar。。
在这里插入图片描述
依次点开 all-Devel,在Devel里选择我们需要的组件(binutils,gcc-core,gcc-g++,gdb,git,make,mingw64-i686-gcc-core,mingw64-i686-gcc-g++,)
在这里插入图片描述
各种组件:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
找不到的不用纠结,会自动帮你选上的,选完了图示的几个组件后,点下一步:
在这里插入图片描述
然后就开始坐等安装成功了!安装完成之后,桌面上会有一个快捷方式,打开之后验证我们是否安装成功了:
输入:cygcheck -c cygwin
在这里插入图片描述
如果Status 状态是OK,则Cygwin运行正常

之后分别输入make -v,gcc -v, g++ -v查看版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到这些组件我们都安装好了,但是还没有结束,还差最后一步添加环境变量。我的电脑(右键)->属性->高级系统设置->环境变量->系统变量中 找到path,点击编辑

在这里插入图片描述
添加Cygwin文件夹下的 bin、sbin、usr/sbin这三个文件夹
在这里插入图片描述
然后就可以在cmd命令行里使用linux命令了
先来测试pwd和ls命令:
在这里插入图片描述
测试成功
3.2 Glove训练
在cmd命令行里进入Glove主文件夹下:
在这里插入图片描述
输入:make
在这里插入图片描述
输入: bash demo.sh
在这里插入图片描述
可以看到已经在训练了,训练时间取决于你的语料库,总之还是很快的。
在这里插入图片描述
训练完之后可以看到有生成的词向量txt文件,这就是我们已经训练好的词向量!
最后加载模型,使用Gensim。
安装gensim需要注意的一点:
安装命令: pip install gensim
如果numpy报错,就卸载gensim,再卸载numpy,然后重新pip install gensim,pip install numpy
如果scipy报错,就卸载gensim,再卸载scipy,然后重新安装gensim和scipy
注意卸载之后重新安装的顺序不能乱!
如果import gensim的时候出现了warning那么只需要每次import的时候输入:
在这里插入图片描述

import warnings
warnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vecimport numpy as npdef sigmoid(x):# TODO: Implement sigmoid functionreturn 1/(1 + np.exp(-x))
# 输入文件
glove_file = 'vectors.txt'
# 输出文件
w2v_file = 'w2v.txt'
# 开始转换
glove2word2vec(glove_file, w2v_file)
# 加载转化后的文件
model = KeyedVectors.load_word2vec_format(w2v_file)  # 该加载的文件格式需要转换为utf-8
# print(model['月'])
vector1 = model['白娘子']
vector2 = model['白素贞']
# print('白娘子和白素贞的相似度', vector1.dot(vector2.T) / (np.linalg.norm(vector1) * np.linalg.norm(vector2)))print("<余弦距离>\"白娘子\"与\"白素贞\"的相似度为:{:.3f}".format(vector1.dot(vector2.T) / (np.linalg.norm(vector1) * np.linalg.norm(vector2))))for i in range(len(vector1)):temp = np.subtract(vector1[i], vector2[i])temp = np.power(temp, 2)dicts = np.sqrt(temp.sum())
print("<欧式距离>\"白娘子\"与\"白素贞\"的相似度为:{:.3f}".format(dicts))

运行结果:在这里插入图片描述


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

相关文章

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…

MySQL的表锁

目录 共享锁与排它锁&#xff08;读锁和写锁&#xff09; 1、锁定读 2、写操作 1、表锁 表级别的读锁和写锁 意向锁&#xff08;IS、Ik&#xff09; 自增锁&#xff08;TUTO-INC锁&#xff09; 元数据锁&#xff08;MDL锁&#xff09; 共享锁与排它锁&#xff08;读锁和写…