Word2vec实验
概述:实验测试了Google的word2vec (C版本)的源代码,以及使用Twitter数据集重新进行了测试
输入 :源代码给出的输入文件为通过demo-word .sh给出的链接下载得到,大小约为100Mb,类型未知,网站和源代码都没有给出,但是dat文件(搜狗的新闻数据)和txt文件(Twitter数据)都可以运行。
-
输出 :输出为一个vectors.bin文件
通过python程序转码之后变成txt文件,可以查看每一个单词的向量
在当前工作目录下在terminal输入./distance vectors.bin运行后,输入任意英文单词,会返回相似的词语,按照预先距离从大到小排列
其中text8的词汇表大小为71291,训练词数为16718843,在运行的过程中terminal就会显示词汇表大小“Vocab size:“和训练词的大小“Words in train file:”
-
更换数据集 :更换数据集的代码为./word2vec -train xxxx -output vectors.bin -cbow 0 -size 48 -window 5 -negative 0 -hs 1 -sample 1e-4 -threads 20 -binary 1 -iter 100
其中,-train text8 表示的是输入文件是text8,-output vectors.bin 输出文件是vectors.bin,-cbow 0表示不使用cbow模型,默认为Skip-Gram模型。-size 48 每个单词的向量维度是48,-window 5 训练的窗口大小为5,-negative 0 -hs 1不使用NEG方法,使用HS方法。-sampe指的是采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。-binary为1指的是结果二进制存储,为0是普通存储,-thread为线程数, -iter为迭代次数。
本次更换为Twitter的数据集,文件类型为txt,大小约为100Mb,去除数字等无用数据之后,在terminal通过上述方式得到输出文件vectors-ch.bin ,词汇表大小为96301,训练词数为9427804,转换为twitter.txt后可以看到各个词的词向量
相同输入得到的不同结果:
本次实验测试了look,father,school和java四个词语
Twitter数据集结果:
look:
father:
school:
java
text数据集结果:
look:
father:
school:
java