天道酬勤

坚持,努力,让好事发生

0%

word2vec

word2vec的使用和学习…

word2vec使用

先跑起来,跑出一个结果,然后再详细了解。
word2vec有多个版本,我是用NLPchina的这个版本

代码下载

git clone https://github.com/NLPchina/Word2VEC_java.git
cd Word2VEC_java

准备训练方法需要的语料

在Word2VEC_java目录下新建library目录,然后下载语料到这个路径下。
语料要求是分完词的文件,一行是分完词的一句话或者一篇文章。行数不限。

训练模型

修改 Word2VEC_java/src/main/java/com/ansj/vec/Learn.java 文件中的main函数为:

Learn learn = new Learn();
long start = System.currentTimeMillis();
learn.learnFile(new File("library/corpus.txt"));  // 语料的路径
System.out.println("use time " + (System.currentTimeMillis() - start));
learn.saveModel(new File("library/javaVector.model"));  // 模型的路径

执行main方法

alpha:0.025	Progress: 0%
alpha:0.02498111730866601	Progress: 0%
alpha:0.024964508501374084	Progress: 0%
alpha:0.02494698416965384	Progress: 0%
alpha:0.024929642279395765	Progress: 0%
alpha:0.024912590636918405	Progress: 0%

...

alpha:1.4140374308845295E-4	Progress: 99%
alpha:1.245129808095463E-4	Progress: 99%
alpha:1.043813947391059E-4	Progress: 99%
alpha:8.721199459071072E-5	Progress: 99%
alpha:6.699748058291988E-5	Progress: 99%
alpha:4.9765055202141695E-5	Progress: 99%
alpha:3.306005150289226E-5	Progress: 99%
Vocab size: 348846
Words in train file: 15073327
sucess train over!
use time 2519393

以上就完成了本文的目标,生成的模型文件路径为:library/javaVector.model。
训练之后,下一步的目标就是进行得到词向量之后计算句向量了,这就是后文的目标了。

import java.io.IOException;

import com.ansj.vec.Word2VEC;

public class Test {
    public static void main(String[] args) throws IOException {
        Word2VEC w1 = new Word2VEC() ;
        //w1.loadGoogleModel("C:/WorkSpaces/NLP/Word2VEC_java/library/javaVector.model") ;
        w1.loadJavaModel("C:/WorkSpaces/NLP/Word2VEC_java/library/javaVector.model");
        System.out.println(w1.distance("经济"));
    }
}

References

[1] [NLP]训练Word2vec的JAVA版本
[2] word2vec
[3] 用word2vec分析中文维基语料库
[4] 中英文维基百科语料上的word2vec实验
[5] word2vec 中的数学原理详解(一)目录和前言
[6] word2vec 中的数学原理详解(二)预备知识
[7] word2vec 中的数学原理详解(三)背景知识
[8] word2vec 中的数学原理详解(四)基于 Hierarchical Softmax 的模型
[9] word2vec 中的数学原理详解(五)基于 Negative Sampling 的模型
[10] word2vec 中的数学原理详解(六)若干源码细节
[11] word2vec源码详细赏析(一)
[12] 在线word2vec网站