我需要在java中看到一些示例代码,以便我可以找出库中定义的各种方法的正常运行。还有如何传递各种必要的参数。 他们之中有一些是 svm_predict svm_node svm_problem等 我做了很多谷歌搜索,我仍然没有找到实质性的东西。而java的文档是另一个主要的失望。请帮帮我!! 这是我到目前为止编写的一些代码。
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import libsvm.*;
import libsvm.svm_node;
import java.io.IOException;
import java.io.InputStream;
public class trial {
public static void main(String[] args) throws IOException {
svm temp = new svm();
svm_model model;
model = svm.svm_load_model("C:\\Users\\sidharth\\Desktop\\libsvm-3.18\\windows\\svm- m.model");
svm_problem prob = new svm_problem();
prob.l = trial.countLines("C:\\Users\\sidharth\\Desktop\\libsvm-3.18\\windows\\svm-ml.test");
prob.y = new double[prob.l];
int i;
for(i=0;i<prob.l;i++)
{
prob.y[i]=0.0;
}
prob.x = new svm_node[prob.l][];
temp.svm_predict(model, /*what to put here*/);
}
public static int countLines(String filename) throws IOException {
InputStream is = new BufferedInputStream(new FileInputStream(filename));
try {
byte[] c = new byte[1024];
int count = 0;
int readChars = 0;
boolean empty = true;
while ((readChars = is.read(c)) != -1) {
empty = false;
for (int i = 0; i < readChars; ++i) {
if (c[i] == '\n') {
++count;
}
}
}
return (count == 0 && !empty) ? 1 : count;
} finally {
is.close();
}
}
}
我已经创建了一个模型文件,我想使用此模型文件预测样本数据。我给了prob.y []一个0的标签。 任何由您编写的示例代码都将提供很大帮助。 附:我应该制作一个基于SVM的POS标记器。这就是为什么我标记了nlp。
答案 0 :(得分:0)
非常简单。
对于培训,你可以写一些表格:
svm_train training = new svm_train();
String[] options = new String[7];
options [0] = "-c";
options [1] = "1";
options [2] = "-t";
options [3] = "0"; //linear kernel
options [4] = "-v";
options [5] = "10"; //10 fold cross-validation
options [6] = your_training_filename;
training.run(options);
如果您选择保存模型。然后你可以通过
检索它libsvm.svm_model model = training.getModel();
如果您希望在测试数据上测试模型,可以写一些表格:
BufferedReader input = new BufferedReader(new FileReader(test_file));
DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(prediction_output_file)));
svm_predict.predict(input, output, model, 0);
希望这有帮助!