#java版word2vector使用说明
create by:junhong
date: 2017-02-20
- 1 测试用例
(comment.txt)
几号 开学 吗
上学 课程 多 吗
学校 有 什么 课程
大学 里面 谈恋爱 了 吗
你 是 怎么 读 大学 的
上 大学 生活 会 有 什么 不 一样
去年 大学 几号 学校 的
单身 生活 与 恋爱 生活 的 区别
- 2 模型训练类
public static void main(String[] args) throws IOException {
Learn learn = new Learn();
long start = System.currentTimeMillis();
String path = Learn.class.getClassLoader().getResource("").getPath();
learn.learnFile(new File(path + "library/comment.txt"));
System.out.println("use time " + (System.currentTimeMillis() - start));
learn.saveModel(new File(path + "library/javaVector"));
System.out.println("-- save done ---");
}
- 3 模型加载与计算类
public static void main(String[] args) throws IOException {
Word2VEC vec = new Word2VEC();
String path = Learn.class.getClassLoader().getResource("").getPath();
vec.loadJavaModel(path + "library/javaVector");
//System.out.println("wordMap=" + vec.getWordMap());
String strs[] = {"***", "你", "的", "吗", "开学", "生活", "恋爱"};
for (String str : strs) {
System.out.println(str + "\t" + vec.distance(str));
}
}
- 4 测试结果
result:
***
[]
你
[几号 0.1512225, 区别 0.105051436, 大学 0.07324863, 吗 0.07191756, 读 0.064484626, 有 0.04560892, 什么 0.04451567, 几号 0.044397067, 多 0.0243887, 的 0.01972302, 去年 0.019663095, 会 0.018008891, 单身 0.017954953]
的
[谈恋爱 0.13655329, 大学 0.09776792, 什么 0.090502314, 几号 0.06358007, 一样 0.05573673, 多 0.053700745, 生活 0.051247604, 去年 0.050584562, 单身 0.04922419]
吗
[上学 0.19567765, 不 0.16522878, 里面 0.14115049, 恋爱 0.08737221, 学校 0.07880855, 你 0.07191756, 了 0.06601024, 是 0.048410047, 谈恋爱 0.037812416, 一样 0.024150448, 会 0.01976991, 区别 0.011833065, 开学 0.011146497, 有 0.008242807, 几号 0.0029128734]
开学
[里面 0.11983235, 课程 0.08265669, 什么 0.061957378, 谈恋爱 0.057773333, 大学 0.053003673, 上 0.050531298, 是 0.046775483, 读 0.039584536, 的 0.03136791]
生活
[课程 0.101053946, 学校 0.079275474, 里面 0.07428617, 几号 0.06859991, 几号 0.058182783]
恋爱
[与 0.21828501, 大学 0.10180222, 吗 0.08737221, 几号 0.076356836, 去年 0.06965362, 怎么 0.057869464, 了 0.04668614, 生活 0.04389965, 一样 0.040114805, 是 0.026322635]
###关于文件编码
若乱码导致模型训练失败,可查看具体是文件编码还是IDE编码导致!
打印模型具体的'wordMap'即知道模型是否乱码 ‘System.out.println("wordMap=" + vec.getWordMap());’