是什么阻止您以文本格式保存word2vec(C程序)输出,然后使用Java代码读取文件并将字符串加载的字符串中加载矢量?
一些代码片段:
// Class to store a hashmap of wordvecs
public class WordVecs {
HashMap 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 {
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();
}
....
}
如果要获取给定单词的最近邻居,可以保留与每个WordVec对象关联的N个最近预先计算的邻居的列表.