Word2Vec——使用GloVe训练中文词向量
准备语料
准备好中文语料:中文语料库,或者使用Leavingseason准备好的语料进行训练:http://pan.baidu.com/s/1jHZCvvo
准备源码
到斯坦福GloVe开源代码gihub地址下载代码;解压后将语料×××.txt添加到GloVe-master文件夹下
修改训练语料地址
打开demo.sh文件,修改相应的内容 因为demo默认是下载网上的语料来训练的,因此如果要训练自己的语料,需要注释掉
修改参数设置,将CORPUS设置成语料的名字
代码语言:javascript复制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 保存文件类型(2进制)
NUM_THREADS=8 线程数
X_MAX=10
执行bash文件
进入到主文件夹下
代码语言:javascript复制make
代码语言:javascript复制bash demo.sh
注意,如果训练数据较大,则训练时间较长,那么建议使用nohup来运行程序
代码语言:javascript复制nohup bash demo.sh >output.txt 2>&1 &
训练后会得到vetors.txt,打开后在第一行加上vacob_size vector_size,这样才能用word2vec的load函数加载成功 vacob_size vector_size可在训练时看到:
参数说明
进入glove目录下,首先先参考README.txt,里面主要介绍这个程序包含了四部分子程序,按步骤分别是vocab_count
、cooccur
、shuffle
、glove
:
vocab_count
:用于计算原文本的单词统计(生成vocab.txt,每一行为:单词 词频)cooccur
:用于统计词与词的共现,类似word2vec的窗口内的任意两个词(生成的是cooccurrence.bin,二进制文件)shuffle
:对于2中的共现结果重新整理glove
:glove算法的训练模型,会运用到之前生成的相关文件(1&3),最终会输出vectors.txt和vectors.bin(前者直接可以打开,下文主要针对它做研究,后者还是二进制文件)