JNI semble devoir utiliser CPython, donc py4j est une bonne idée. Un gars qui démarre java dans un autre processus et établit des ponts avec python par communication socket.
Je l'ai essayé avec kuromoji
et mon propre pot.
Je veux dire, j'étais heureux de pouvoir utiliser kuromoji
de python, alors j'ai essayé diverses choses.
py4j0.8.2.1.jar
de py4j et préparez-le.kuromoji-0.7.7.jar
org/kuryu/Sample.java
package org.kuryu;
public class Sample {
public String foo() {
return "FOO!!!!!!!!";
}
public static String bar() {
return "BAR!!!!!!!!";
}
}
Faites-en un pot
$ javac org/kuryu/Sample.java
$ jar cvf kuryu.jar org/kuryu/*.class
J4Py.java
import py4j.GatewayServer;
public class J4Py {
public static void main(String[] args) {
J4Py app = new J4Py();
GatewayServer server = new GatewayServer(app);
server.start();
}
}
Ajoutez votre propre pot et kuromoji au manifeste.
manifest.mf
Main-Class: J4Py
Class-Path: py4j0.8.2.1.jar kuromoji-0.7.7.jar kuryu.jar
Faites-en un pot
$ javac -cp py4j0.8.2.1.jar J4Py.java
$ jar cvfm J4Py.jar manifest.mf J4Py.class
Si vous le démarrez via classpath, il semble que vous puissiez également l'utiliser du côté py4j.
Au début avec jar
$ java -jar J4Py.jar
Au début de la classe
$ java -cp py4j0.8.2.1.jar:kuromoji-0.7.7.jar:kuryu.jar:. J4Py
Avec le serveur de passerelle Java en cours d'exécution, procédez comme suit.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from py4j.java_gateway import JavaGateway
gateway = JavaGateway()
# java.util.Random
random = gateway.jvm.java.util.Random()
n1 = random.nextInt(10)
n2 = random.nextInt(10)
print "%d + %d = %d" % (n1, n2, n1+n2)
#Pot fait maison
kuryu = gateway.jvm.org.kuryu.Sample
print kuryu.bar()
ins = kuryu()
print ins
print ins.foo()
#Tokenizer kuromoji
KuroTokenizer = gateway.jvm.org.atilika.kuromoji.Tokenizer
tokenizer = KuroTokenizer.builder().build();
a = tokenizer.tokenize(u"Je veux manger des sushis.")
for token in a:
print token.getSurfaceForm() + "\t" + token.getAllFeatures()
Principalement cet étrange.
http://www.atilika.com/ja/products/kuromoji.html http://py4j.sourceforge.net/py4j_java_gateway.html http://qiita.com/mojaie/items/f16b97b1388f73e56b86
Recommended Posts