很早在实验室就看见钱宝宝用Google的Word2Vector来阅读《天龙八部》并找出与指定词最相关的几个词,最近正好学习新出的深度学习开源项目DeepLearning4J,于是就拿这个例子来练手吧。DL4J快速入门请看 http://deeplearning4j.org/quickstart.html 。
DeepLearning4J的Example中自带了很多应用实例,Word2Vector也在其中,因此我的工作主要是以下几步:
1. 准备开发环境和原始数据
2. 分词,格式转换
3. 构建Word2Vector模型并训练
4. 测试并输出
一. 准备开发环境和原始数据
开发环境我使用的是IDEA(用eclipse也OK),JDK1.7,Maven3.3.1。
上武侠小说网下载一篇《天龙八部》,去掉文件首尾的不相关信息,重命名放到指定位置,OK。
二. 分词、格式转换
我比较喜欢使用复旦NLP,一是用惯了熟练,二是使用起来也方便,Maven引用FNLP有一点小问题,解决方法可以参考我以前的文章,这里不再赘述。
新建Java工程(或者直接使用DL4J-example工程),新建JavaClass,命名为FudanTokenizer:
package edu.zju.cst.krselee.example.word2vector;
/**
* Created by KrseLee on 16/7/20.
*/
import org.fnlp.nlp.cn.tag.CWSTagger;
import org.fnlp.util.exception.LoadModelException;
import java.io.IOException;
import java.util.List;
import org.fnlp.ml.types.Dictionary;
import org.fnlp.nlp.corpus.StopWords;
public class FudanTokenizer {
private CWSTagger tag;
private StopWords sto