您的位置:首页 > 运维架构 > Shell

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

2017-08-30 09:38 411 查看
比如我要执行:

./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)).txt−cbow0−size200−window5−negative0−hs1−sample1e−3−threads12−classes((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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell linux shell word2vec