包括windos下运行.sh文件下载GIT和Cygwin过程踩坑及调试过程
先下载GLOVE官方材料包跳转中...或以下链接
https://github.com/stanfordnlp/GloVe.git
下载内容包含
先要对自己语料进行处理:把语料处理为一行一条,一条中进行分词,并用空格隔开,把处理好数据放在下载的GloVe-master文件夹下
然后把下载文件里的demo.sh内容修改,注释原默认下载部分:
然后我搜了一下经验分享,修改后面的代码
CORPUS=seg.txt ###################自己的语料先进行分词,一条一条分词用空格隔开的处理语料 VOCAB_FILE=vocab.txt #输出的字典 COOCCURRENCE_FILE=cooccurrence.bin COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin BUILDDIR=build SAVE_FILE=vectors VERBOSE=2 #冗余输出参数 设置为2 可以查看程序运行进度 MEMORY=4.0 # VOCAB_MIN_COUNT=5 #单词至少出现的次数 VECTOR_SIZE=300 #训练的词向量维度 MAX_ITER=15 #训练迭代次数 WINDOW_SIZE=15 #窗口大小 BINARY=2 NUM_THREADS=8 X_MAX=10 $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_FILE if [[ $? -eq 0 ]] then $BUILDDIR/shuffle -memory $MEMORY -verbose $VERBOSE < $COOCCURRENCE_FILE > $COOCCURRENCE_SHUF_FILE if [[ $? -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 $VERBOSE if [[ $? -eq 0 ]] then if [ "$1" = 'matlab' ]; then matlab -nodisplay -nodesktop -nojvm -nosplash < ./eval/matlab/read_and_evaluate.m 1>&2 elif [ "$1" = 'octave' ]; then octave < ./eval/octave/read_and_evaluate_octave.m 1>&2 else python eval/python/evaluate.py fi fi fi fi fi
windos环境下不能直接运行.sh文件,所以开始下载GIT踩坑,按照搜的图文教程下载好之后老报错,显示没有vocab-file文件,自己建一个也不行,还有说GIt bash命令行输入make命令的,但是根本make没有命令!!!! 就是一整个好气
还好有别的教程,所以卸载GIT,下载Cygwin按照教程配置(Cygwin安装教程_Errol_King的博客-CSDN博客_cygwin),安装时基础下载的包时除了binutils、 gcc 、mingw 、gdb还一定要下载make,不然要重新安装一遍(哭),最后finish!
安装好加入路径,点击
检验安装成功没:make --version,gcc --version....
有信息就是安装好了 ,终于可以运行了
切换路径到自己的GloVe-master文件夹,然后输入 make出现以下:
他就自己生成build文件夹:
然后再输入 sh demo,sh,就开始训练了
但是报错了: GloVe-master/eval/python/evaluate.py", line 2, in <module>
import numpy as np
ModuleNotFoundError: No module named 'numpy'
是python的库没弄好,而且是evalate里面的,不管了,词向量已经生成好了:
得到三个文件,vocab.txt里是统计的词频,vectors.txt就是生成的词向量,就生成好了!!!
使用测试:
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec
# 输入文件
glove_file = 'Glove-master/vectors.txt'
# 输出文件
w2v_file = 'Glove-master/embedd.txt'
# 开始转换
glove2word2vec(glove_file, w2v_file)
# 加载转化后的文件
model = KeyedVectors.load_word2vec_format(w2v_file) #该加载的文件格式需要转换为utf-8
print(model['表明'])
完成啦!!!