Word2Vec——使用GloVe训练中文词向量
- 2020 年 2 月 12 日
- 筆記
Word2Vec——使用GloVe训练中文词向量
准备语料
准备好中文语料:中文语料库,或者使用Leavingseason准备好的语料进行训练:http://pan.baidu.com/s/1jHZCvvo

准备源码
到斯坦福GloVe开源代码gihub地址下载代码;解压后将语料×××.txt添加到GloVe-master文件夹下

修改训练语料地址
打开demo.sh文件,修改相应的内容 因为demo默认是下载网上的语料来训练的,因此如果要训练自己的语料,需要注释掉

修改参数设置,将CORPUS设置成语料的名字
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文件
进入到主文件夹下
make

bash demo.sh

注意,如果训练数据较大,则训练时间较长,那么建议使用nohup来运行程序
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(前者直接可以打开,下文主要针对它做研究,后者还是二进制文件)