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
训练结束后会得到3个vector文件:
vocab.txt中每一行是词及其词频
vectors.txt中存放了我们所需的词向量