deeplearning4j之word2vec学习

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

<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<nd4j.version>0.7.1</nd4j.version>
		<dl4j.version>0.7.1</dl4j.version>
		<datavec.version>0.7.1</datavec.version>
		<scala.binary.version>2.10</scala.binary.version>
	</properties>

	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.nd4j/nd4j-native -->
		<dependency>
			<groupId>org.nd4j</groupId>
			<artifactId>nd4j-native</artifactId>
			<version>${nd4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.deeplearning4j</groupId>
			<artifactId>deeplearning4j-core</artifactId>
			<version>${dl4j.version}</version>
		</dependency>
		        <dependency>
            <groupId>org.deeplearning4j</groupId>
            <artifactId>deeplearning4j-nlp</artifactId>
            <version>${dl4j.version}</version>
        </dependency>
		<dependency>
			<groupId>org.datavec</groupId>
			<artifactId>datavec-api</artifactId>
			<version>${datavec.version}</version>
		</dependency>
	</dependencies>



语料库来自点评文本数据,分词用的是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个词汇:[温柔, 美眉, 静儿, 妹妹, 帅哥, 大美女, 小姐姐, 气动, 身材高挑, 姐姐, 雪儿, 小姑娘, 小美女, 湘妹子, 诗敏, 声音甜美, 可选颜色, 有气质, 张娟, 大眼睛]






  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值