我正在尝试通过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的新手,所以很可能有一些我不明白的东西。
要非常清楚,我的问题是:
Runtime.getRuntime.exec()
使用它吗?这似乎不是JNI的精神,因为不需要任何包装器/库。另外,这并不能使它非常便携。欢迎任何形式的帮助或指导。
答案 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包装器,你会:
make all java
或make java
java
并使用mvn test
mvn install
让Java API震撼并放在你的本地maven资源库中。据说这会在您的机器上构建JNI部件,以便在您安装了make
命令所需的本机C / C ++库时适合您平台的C / C ++库。有关更多背景信息,请参阅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方法。
回到问题:
.gitignore
。我自己编译代码的一些情况将是唯一的解决方案,例如提供的工件不会在OpenSuse上运行(我的情况)