2018-12-06

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:

2018-12-06_第1张图片
look-Twitter.png

father:

2018-12-06_第2张图片
father-Twitter.png

school:

2018-12-06_第3张图片
school-Twitter.png

java

2018-12-06_第4张图片
java-Twitter.png

text数据集结果:

look:

2018-12-06_第5张图片
look-text.png

father:

2018-12-06_第6张图片
father-text.png

school:

2018-12-06_第7张图片
school-text.png

java

2018-12-06_第8张图片
java-text.png

你可能感兴趣的:(2018-12-06)