linux shell循环操作 + word2vec词向量训练/聚类的参数解释

比如我要执行:
./word2vec -train CGJJ_split.txt -output classes_X.txt -cbow 0 -size 200 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -classes X
一个操作。

现在希望将上述命令的X作为变量,循环执行

那么将X改为i变量,执行for循环,同时将原命令里的i用$((i))表示 :

for ((i=350; i<=1000; i=i+50)) do ./word2vec -train CGJJ_split.txt -output classes_ ((i)).txtcbow0size200window5negative0hs1sample1e3threads12classes ((i)); done

即可!

其中,参数解释如下:

-train 训练数据
-output 结果输入文件,即每个词的向量
-cbow 是否使用cbow模型,0表示使用skip-gram模型,1表示使用cbow模型,默认情况下是skip-gram模型,cbow模型快一些,skip-gram模型效果好一些
-size 表示输出的词向量维数
-window 为训练的窗口大小,8表示每个词考虑前8个词与后8个词(实际代码中还有一个随机选窗口的过程,窗口大小<=5)
-negative 表示是否使用NEG方,0表示不使用,其它的值目前还不是很清楚
-hs 是否使用HS方法,0表示不使用,1表示使用
-sample 表示 采样的阈值,如果一个词在训练样本中出现的频率越大,那么就越会被采样
-binary 表示输出的结果文件是否采用二进制存储,0表示不使用(即普通的文本存储,可以打开查看),1表示使用,即vectors.bin的存储类型

除了上面所讲的参数,还有:
-alpha 表示 学习速率
-min-count 表示设置最低频率,默认为5,如果一个词语在文档中出现的次数小于该阈值,那么该词就会被舍弃
-classes 表示词聚类簇的个数,从相关源码中可以得出该聚类是采用k-means

按类别排序:
sort classes.txt -k 2 -n > classes.sorted.txt

猜你喜欢

转载自blog.csdn.net/qq_21460525/article/details/77698219
今日推荐