Word2Vec——使用GloVe训练中文词向量

2020-02-12 11:21:58 浏览数 (2)

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_countcooccurshuffleglove

  1. vocab_count:用于计算原文本的单词统计(生成vocab.txt,每一行为:单词 词频)
  2. cooccur:用于统计词与词的共现,类似word2vec的窗口内的任意两个词(生成的是cooccurrence.bin,二进制文件)
  3. shuffle:对于2中的共现结果重新整理
  4. glove:glove算法的训练模型,会运用到之前生成的相关文件(1&3),最终会输出vectors.txt和vectors.bin(前者直接可以打开,下文主要针对它做研究,后者还是二进制文件)

0 人点赞