Vowpal Wabbit的Java API?

时间:2016-09-02 14:23:16

标签: java java-native-interface vowpalwabbit

我正在尝试通过Java使用Vowpal Wabbit。我已经下载并成功编译了GitHub的代码。命令行工具工作正常。 在快速浏览一下存储库(特别是here)后,我只能假设通过Java使用它应该已经可以了,而且我真的不想重新发明轮子。

  

Vowpal Wabbit的包装器,允许通过Java使用。这个包装器设计为独立的。因为   使用JNI时,JAR支持许多平台。

我已将maven依赖项(找到here)添加到我的项目中,但没有任何文档,我真的不知道从哪里开始。 我在another question中看到似乎可以将VW与Java一起使用,但是这个人只使用Runtime.getRuntime.exec()来调用他的bash命令,我找不到任何其他的文档这样做(并且在SO上只有2 questions混合VW和Java,这没有帮助)。 我是JNI的新手,所以很可能有一些我不明白的东西。 要非常清楚,我的问题是:

  • 我应该制作一个有效的vw命令并通过Runtime.getRuntime.exec()使用它吗?这似乎不是JNI的精神,因为不需要任何包装器/库。另外,这并不能使它非常便携。
  • 哪里(地狱)是(Java API)文档?

欢迎任何形式的帮助或指导。

6 个答案:

答案 0 :(得分:2)

我是VW JNI包装器的两个主要作者之一。自发布此问题以来,界面已经发生了重大变化。我们现在鼓励用户自己编译本机,并在java.library.path上提供。我们已经更新了README,以展示如何使用Java库。

我完全同意您的批评,即我们尚未发布Java API。我将在下次修改此代码时继续处理。在此期间,请随意克隆库并运行mvn install,您可以自己生成Java API文档。它们应该非常详细,因为我们花了很多精力编写详细的文档。

答案 1 :(得分:1)

你可以查看我们内置的vowpal wabbit JNI包装器:https://github.com/indeedeng/vowpal-wabbit-java

我们编写了可以作为使用示例的集成测试,我们也编写了API文档。查看自述文件的“using the library”部分。

希望这会有所帮助。

答案 2 :(得分:1)

我不认为这会增加很多,但以前的答案都没有提供明确的答案。就像@Macchiatow提到的那样,要使用Vowpal Wabbit附带的Java包装器,你会:

  1. (在项目根目录上)make all javamake java
  2. cd进入java并使用mvn test
  3. 验证安装
  4. 然后你mvn install让Java API震撼并放在你的本地maven资源库中。据说这会在您的机器上构建JNI部件,以便在您安装了make命令所需的本机C / C ++库时适合您平台的C / C ++库。
  5. 你应该能够在你自己项目中使用的构建工具中包含这些jar中的vowpal包(ant / maven / boot / leiningen / sbt / etc。作为in here
  6. 有关更多背景信息,请参阅Vowpal Wabbit Java readme。我认为它试图在那里说的是,如果你想要一个来自maven central的现成罐子,你应该确保它与你正在使用的vowpal版本相同,但是我不知道更多。如果你像上面那样构建它,你可能会使用相同的版本。

    我已经使用Ubuntu 16.04和Java 8对上述过程进行了全新的克隆。

答案 3 :(得分:0)

This链接可能对设置JNI包装有一些帮助。

答案 4 :(得分:0)

我无法在任何地方找到Java API文档,但Java代码似乎有很好的文档记录 - 您是否尝试过自己从代码中生成Javadoc?

答案 5 :(得分:0)

确实有Java JNI包装器可以对VW进行基本访问。基本上我的意思是教你的模型并在以后预测概率。他们还提供了Python库,它可以为Java做更多的包装。最近,我被迫通过扩展提供的代码向Java公开了更多的VW方法。

回到问题:

  • 而是使用中央maven repo中可用的vw-jni工件并克隆其代码并运行.gitignore。我自己编译代码的一些情况将是唯一的解决方案,例如提供的工件不会在OpenSuse上运行(我的情况)
  • 代码非常直接。 VWLearners :: create是一个从Java获取VW实例的工厂。