Word2vec网站:https://code.google.com/p/word2vec/
编译:
直接在linxu下编译。
make
直接编译发现有问题,显示编译参数-Ofast有问题。去掉fast,就可以。
CFLAGS = -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
CFLAGS = -lm -pthread -O -march=native -Wall -funroll-loops -Wno-unused-result
没有详细研究,应该与不同版本gcc有关?
编译后,产生文件:
compute-accuracy
word2vec
word-analogy
distance
word2phrase
编译:
直接在linxu下编译。
make
直接编译发现有问题,显示编译参数-Ofast有问题。去掉fast,就可以。
CFLAGS = -lm -pthread -Ofast -march=native -Wall -funroll-loops -Wno-unused-result
CFLAGS = -lm -pthread -O -march=native -Wall -funroll-loops -Wno-unused-result
没有详细研究,应该与不同版本gcc有关?
编译后,产生文件:
compute-accuracy
word2vec
word-analogy
distance
word2phrase
3.测试
性能和参数有关
在多核CPU上(使用开关‘-threads N’),通过使用并行训练可以显著提高训练速度,超参数选择对性能也至关重要(包括速度和准确率),主要选择有:
架构:skip-gram(慢、对罕见字有利)vs CBOW(快)
a.
./word2vec -train resultbig.txt -output vectors.bin -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1
参数解释:
word2vec命令(理解为工具)
-train参数,训练,以得到vectors
corpus.txt做为被训练的语料库
-output命令
vectors.bin指定输出(txt格式和binary格式两种)
cbow架构
0
size 向量大小
200
window文本大小:文本(window)大小:skip-gram通常在10附近,CBOW通常在5附近negative 训练算法
5
-hs
1
-sample 采样频繁词
1e-3
-threads 线程个数
12
-binary 转换为二进制
1 boolean类型
训练算法:分层softmax(对罕见字有利)vs 负采样(对常见词和低纬向量有利)
欠采样频繁词:可以提高结果的准确性和速度(适用范围1e-3到1e-5)
维度词向量:通常情况下表现都很好