Vowpal Wabbit无需写入磁盘即可执行

时间:2014-10-21 16:29:23

标签: java java-8 vowpalwabbit

我写了一个java代码,用以下方式执行Vowpal Wabbit:

 System.out.println("Executing command " + command);
        final Runtime r = Runtime.getRuntime();
        final Process p = r.exec(command);
        System.out.println("waiting for the process");
        try (final BufferedReader b = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
            String line;

            while ((line = b.readLine()) != null) {
                final T lineResult = textParser.parseLine(line);
                parserResultCombiner.addToCombiner(lineResult);
            }
        }
        p.waitFor();
        System.out.println("done");
}

命令在哪里

  

vw -d input.txt --loss_function = logistic -f model.vw

这样做的缺点是需要写入磁盘。经过一番搜索,我了解到vowpal wabbit支持从标准输入中读取数据 example in R

我找不到任何在Java 1.8中完成此任务的示例。有人可以与我分享吗?

1 个答案:

答案 0 :(得分:3)

您需要以守护进程模式启动vw。这将启动一个侦听指定端口的进程。

$ vw -i model.vw  -t --daemon --quiet --port 26542

守护进程启动后,您可以使用套接字调用发送样本进行预测

$ echo " abc-example| a b c" | netcat localhost 26542
0.000000 abc-example

$ echo " xyz-example| x y z" | netcat localhost 26542
1.000000 xyz-example

资源: https://github.com/JohnLangford/vowpal_wabbit/wiki/daemon-example

最近,他们使用jni推送了与vw交互的代码的java版本 https://github.com/JohnLangford/vowpal_wabbit/tree/master/java

相关问题