Nat*_*ok3 5 java nlp artificial-intelligence machine-learning word2vec
我在Ubuntu笔记本电脑上使用本教程安装了word2Vec .是否完全有必要安装DL4J以便在Java中实现word2Vec向量?我很乐意在Eclipse工作,我不确定我是否想要DL4J希望我安装的所有其他先决条件.
理想情况下,我将有一个非常简单的方法来使用我已经编写的Java代码(在Eclipse中)并更改几行 - 这样我正在进行的单词查找将检索word2Vec向量而不是我正在使用的当前检索过程.
另外,我已经研究过使用GloVe,但是,我没有MatLab.没有MatLab可以使用GloVe吗?(因为这个原因,我在安装时出错了).如果是这样,与上面相同的问题就是......我不知道如何在Java中实现它.
是什么阻止您以文本格式保存word2vec(C程序)输出,然后使用Java代码读取文件并将字符串加载的字符串中加载矢量?
一些代码片段:
// Class to store a hashmap of wordvecs
public class WordVecs {
HashMap<String, WordVec> wordvecmap;
....
void loadFromTextFile() {
String wordvecFile = prop.getProperty("wordvecs.vecfile");
wordvecmap = new HashMap();
try (FileReader fr = new FileReader(wordvecFile);
BufferedReader br = new BufferedReader(fr)) {
String line;
while ((line = br.readLine()) != null) {
WordVec wv = new WordVec(line);
wordvecmap.put(wv.word, wv);
}
}
catch (Exception ex) { ex.printStackTrace(); }
}
....
}
// class for each wordvec
public class WordVec implements Comparable<WordVec> {
public WordVec(String line) {
String[] tokens = line.split("\\s+");
word = tokens[0];
vec = new float[tokens.length-1];
for (int i = 1; i < tokens.length; i++)
vec[i-1] = Float.parseFloat(tokens[i]);
norm = getNorm();
}
....
}
Run Code Online (Sandbox Code Playgroud)
如果要获取给定单词的最近邻居,可以保留与每个WordVec对象关联的N个最近预先计算的邻居的列表.
Dl4j作者在这里.我们的word2vec实现针对需要自定义管道的人.我不怪你在这里走简单路线.
我们的word2vec实现意味着当你想要对它们做些什么而不是为了搞乱时.c word2vec格式非常简单.
如果你愿意,这里是解析java中的逻辑:https: //github.com/deeplearning4j/deeplearning4j/blob/374609b2672e97737b9eb3ba12ee62fab6cfee55/deeplearning4j-scaleout/deeplearning4j-nlp/src/main/java/org/deeplearning4j/models/embeddings/装载机/ WordVectorSerializer.java#L113
希望那有所帮助
| 归档时间: |
|
| 查看次数: |
7571 次 |
| 最近记录: |