数据来源
中文维基百科数据下载:
zhwiki-latest-pages-articles.xml.bz2
enwiki-latest-pages-articles.xml.bz2
抽取文章正文
- Ubuntu 18
- Python 3
sudo apt-get install python3-pip
pip3 install setuptools
git clone https://github.com/attardi/wikiextractor.git
cd wikiextractor/
sudo python setup.py install
python3 wikiextractor/WikiExtractor.py -b 1000M -o result.txt zhwiki-latest-pages-articles.xml
分词
这里我们使用HanLP进行的分词
注意:需要将繁体中文转换成简体中文, 然后进行分词
计算模型
注意:需要下载并编译好环境
./word2vec -train tt.txt -output vectors.bin -cbow 1 -size 80 -window 5 -negative 80 -hs 0 -sample 1e-4 -threads 20 -binary 1 -iter 15
- tt.txt是刚才分词后的输出文件
- vectors.bin是训练后输出的文件
- cbow 0表示不使用cbow模型,默认为Skip-Gram模型。
- size 80 每个单词的向量维度是80,
- window 5 训练的窗口大小为5就是考虑一个词前五个和后五个词语(实际代码中还有一个随机选窗口的过程,窗口大小小于等于5)。
- negative 0 不适用NEG方法
- hs 1 不使用NEG方法,使用HS方法。
- sampe指的是采样的阈值,如果一个词语在训练样本中出现的频率越大,那么就越会被采样。
- binary为1指的是结果二进制存储,为0是普通存储(普通存储的时候是可以打开看到词语和对应的向量的)。
验证模型
训练完成后,执行命令:
./distance vectors.bin