在上篇文章中对libsvm的流程和简单的java代码测试做了说明,本篇简单对libsvm如何在工程中实践进行简短说明,不当的地方欢迎大家指正。
第一步是对libsvm的预测函数进行调整,我是从svm_predict类中抽取部分代码组成预测防范,代码如下:
/** * 对传入的文本特征根据训练好的分类模型进行分类 * @param model 已经训练好的模型 * @param contentFeature 传入的计算好的文本分词后的特征 * @return */ public static int libSvmPredict(svm_model model, String contentFeature){ //默认分类类别为-1 int label = -1; //判断传入的文本特征是否为空 if (contentFeature == null) return label; //对传入的特征进行切分 StringTokenizer st = new StringTokenizer(contentFeature," \t\n\r\f:"); //这里target用不到,测试中会用到,即我们测试语料的类别标签 // double target = atof(st.nextToken()); int m = st.countTokens()/2; svm_node[] x = new svm_node[m]; for(int j=0;j<m;j++) { x[j] = new svm_node(); x[j].index = atoi(st.nextToken()); x[j].value = atof(st.nextToken()); } double v = svm.svm_predict(model,x); label = (int) v; return label; }