训练自己GLOVE中文词向量过程记录

包括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
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['表明']) 

完成啦!!! 

你可能感兴趣的:(git,python)