GloVe训练词向量详细流程

1,444 阅读2分钟

GloVe训练词向量

输入:语料库

输出:词向量

步骤分为下载代码、准备语料、训练模型

一、下载代码

git clone https: // github . com / stanfordnlp / GloVe . git

下载后是一个文件夹,文件目录如下:

二、准备语料

语料格式是分词后的文本,词之间用空格分开,分词的方法自己选择,比如jieba等,如下:

紧急通知 通知 七点 50 准时 武陵  开会     十一 十一点 十一点半 一点 一点半 准时 散会 时间 会议

  成员 明天 中午 12  30  第一 第一次 例会 会地 地点 待定  预留 留出 时间 收到  回复 全体成员 成员 时间 会议

通知 宣传 宣传部 部将 明天 中午 1230 周三 j4101 开本 本次 部门 例会  带好  本次 例会 考评  本次 例会 主席 主席团  邀请    收到  回复 全体成员 成员 时间 会议 议会 会议 议会 会议

把语料(counts.txt)放到Glove目录下,并将路径添加到demo.sh中。原demo.sh部分代码如下:

#!/bin/bash
set -e
# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it.
# One optional argument can specify the language used for eval script: matlab, octave or [default] python
make
if [ ! -e text8 ]; then
  if hash wget 2>/dev/null; then
    wget http://mattmahoney.net/dc/text8.zip
  else
    curl -O http://mattmahoney.net/dc/text8.zip
  fi
  unzip text8.zip
  rm text8.zip
fi
CORPUS=text8
VOCAB_FILE=vocab.txt
COOCCURRENCE_FILE=cooccurrence.bin
COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin
BUILDDIR=build
SAVE_FILE=vectors
VERBOSE=2
MEMORY=4.0
VOCAB_MIN_COUNT=5
VECTOR_SIZE=50
MAX_ITER=15
WINDOW_SIZE=15
BINARY=2
NUM_THREADS=8
X_MAX=10

改动后的文件如下

#!/bin/bash
set -e
# Makes programs, downloads sample data, trains a GloVe model, and then evaluates it.
# One optional argument can specify the language used for eval script: matlab, octave or [default] python
#make
#if [ ! -e text8 ]; then
#  if hash wget 2>/dev/null; then
#    wget http://mattmahoney.net/dc/text8.zip
#  else
#    curl -O http://mattmahoney.net/dc/text8.zip
#  fi
#  unzip text8.zip
#  rm text8.zip
#fi
CORPUS=counts.txt    #CORPUS改为自己的预训练的文档
VOCAB_FILE=vocab.txt
COOCCURRENCE_FILE=cooccurrence.bin
COOCCURRENCE_SHUF_FILE=cooccurrence.shuf.bin
BUILDDIR=build
SAVE_FILE=vectors
VERBOSE=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

三、训练模型

先在glove目录下执行make命令(如果不存在可能需要安装MinGW)

make

指令执行后会生成一个build文件夹,会产生训练所需的依赖文件。

然后运行demo.sh:

./demo.sh  或 bash demo.sh 或 sh demo.sh 

image.png

训练结束后会得到3个vector文件:

image.png

vocab.txt中每一行是词及其词频

vectors.txt中存放了我们所需的词向量