word2vec是谷歌开源的一个语义预测框架。主要是将词映射到一个维度空间上,每个词都有n个不同维度的信息,用vector表示,词与词之间的关系,就用vec之间的cosine值来表示,consine值越大,说明这两个词之间的关系越近。

传统的计算词与词之间相似的算法有: tf-idf,相似余弦等,而word2vec是通过语义分析来计算相似度,跟前两个差别较大,比如: 贸易站 与 特朗普,如果用前两种算法相似度肯定很差,或者完全不同。而用word2vec,他们两者是有很大关系的,非常接近的。

ansj_seg 是java版本的分词工具,效果还行,之所以介绍它是因为,使用word2vec的前提是需要一个分词工具,下面我们来手动操作一下:

从网上找了一个小的java工程,https://github.com/YuyuZha0/word2vec

再从网上下载一个中文语料库:https://pan.baidu.com/s/1gdJJ1FP#list/path=%2FML%2F%E4%B8%AD%E6%96%87%E8%AF%AD%E6%96%99%E5%BA%93&parentPath=%2FML

再建立这么一个文件夹,把语料库拷进该文件夹

先执行FitExample 来进行训练
再执行RestoreExample 来做实验,你将得到如下结果

感觉很神奇,其实它还有其他的API,欢迎去探索。

另外skip-gram 出来的准确率比cbow 高