deeplearning4j之word2vec学习

在deeplearning4j下训练word2vec模型还是比较简单的,先看下依赖情况:


		UTF-8
		0.7.1
		0.7.1
		0.7.1
		2.10
	

	
		
		
			org.nd4j
			nd4j-native
			${nd4j.version}
		
		
			org.deeplearning4j
			deeplearning4j-core
			${dl4j.version}
		
		        
            org.deeplearning4j
            deeplearning4j-nlp
            ${dl4j.version}
        
		
			org.datavec
			datavec-api
			${datavec.version}
		
	



语料库来自点评文本数据,分词用的是ansj中文分词,最后分出词的效果如下:

格胡亚 街舞 提娜 科目 礼物
舒适 下次 朋友 新型 宽敞 经理 介绍 微信 腾讯聊天账号 aa 妹子 好漂亮 年轻
选片 顾问 鲜婷婷 不错 美女 选片 后期 二期 消费 只能说
感谢 金夫人 配备 专业 团队 摄影师 银行 灯光师 罗云 造型师 任肖琴 造型 助理 美学 感谢 爱情 留下 美好 见证 金夫人 专业 正规 全程 二次 消费
选片 师鲜婷 服务态度 解释 到位 专业性
选片 文学 化妆师 摄影师 选片 愉快 值得推荐
连霍高速 甘肃省 境内 兰州市 张掖市 经永昌 服务区 永昌县 隶属于 金昌市 休息 加油 永昌 服务区 配有 餐厅 超市 卫生间 加水 汽车维修 加油站 甘肃 高速 联合 永昌 服务区 高速交警 系上 红丝带 平安 千里 活动 永昌 服务区 停车场 警察 检查 车辆 行驶证 驾照 友情提醒 疲劳驾驶 高速 超速 服务区 停车场 地面 平整 卫生 环境 还行 停车场 车辆
gg 亘古 宝贝 宝贝
gg 哈哈哈 gg 哈哈哈 公告
gg 打电话 干活 姑父 后街 男孩 好好 同感
gjc 澳洲 读书 对此 深有感触 太多 服务员 热情 推荐 招牌 试过 烧鸡 鲜美 不住 鸡肉 推荐 酱汁 硬伤 汉堡 美味 推荐 薯条 喝喝 flatwhite 发票 介意 来了
godiva 巧克力 让人 甜蜜 要死


按空格隔开,下面直接上代码:

package com.meituan.deeplearning4j;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;

import org.deeplearning4j.models.embeddings.loader.WordVectorSerializer;
import org.deeplearning4j.models.word2vec.Word2Vec;
import org.deeplearning4j.text.sentenceiterator.BasicLineIterator;
import org.deeplearning4j.text.sentenceiterator.SentenceIterator;
import org.deeplearning4j.text.tokenization.tokenizer.DefaultTokenizer;
import org.deeplearning4j.text.tokenization.tokenizer.preprocessor.CommonPreprocessor;
import org.deeplearning4j.text.tokenization.tokenizerfactory.DefaultTokenizerFactory;
import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Word2VecRaw {
	private static Logger log = LoggerFactory.getLogger(Word2VecRaw.class);

	public static void main(String[] args) throws IOException {
		String filePath = "/Users/shuubiasahi/Desktop/bayies/deeplearning/part-00000";
		log.info("Load & Vectorize Sentences....");
		SentenceIterator iter = new BasicLineIterator(new File(filePath));
		TokenizerFactory t = new DefaultTokenizerFactory();
		t.setTokenPreProcessor(new CommonPreprocessor());

		log.info("Building model....");
		Word2Vec vec = new Word2Vec.Builder().
				minWordFrequency(5).
				iterations(1)
				.layerSize(200)
				.minWordFrequency(2)
				.seed(42).
				windowSize(5)
				.iterate(iter)
				.build();
		log.info("Fitting Word2Vec model....");
		vec.fit();
        log.info("Writing word vectors to text file....");

        // Write word vectors to file
        log.info("Writing word vectors to text file....");

        // Write word vectors to file
        WordVectorSerializer.writeWord2VecModel(vec, "pathToWriteto.txt");
		System.out.println("和微信最接近的10个词汇:" + vec.wordsNearest("微信", 10));
		System.out.println("和美女最接近的10个词汇:" + vec.wordsNearest("美女", 20));

	}

}




结果如下:

和微信最接近的10个词汇:[加微信, 微信号, 联系客服, 转账, 手机号, 人间蒸发, 转帐, 加我微信, 转给, 界面]

和美女最接近的10个词汇:[温柔, 美眉, 静儿, 妹妹, 帅哥, 大美女, 小姐姐, 气动, 身材高挑, 姐姐, 雪儿, 小姑娘, 小美女, 湘妹子, 诗敏, 声音甜美, 可选颜色, 有气质, 张娟, 大眼睛]






你可能感兴趣的:(java,机器学习)