Ich möchte ein Glas aus Python verwenden

Ich möchte ein Glas aus Python verwenden

JNI scheint also CPython verwenden zu müssen py4j ist eine gute Idee. Ein Typ, der Java in einem anderen Prozess startet und über Socket-Kommunikation eine Brücke mit Python schlägt.

Ich habe es mit Kuromoji und meinem eigenen Glas versucht. Ich war froh, dass ich Kuromoji aus Python verwenden konnte, also habe ich verschiedene Dinge ausprobiert.

Vorbereitung

Code

Zuallererst die, die ich gemacht habe

org/kuryu/Sample.java


package org.kuryu;

public class Sample {
  public String foo() {
    return "FOO!!!!!!!!";
  }

  public static String bar() {
    return "BAR!!!!!!!!";
  }
}

Mach es zu einem Glas


$ javac org/kuryu/Sample.java
$ jar cvf kuryu.jar org/kuryu/*.class

Code auf der Java-Seite von py4j

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();
  }
}

Fügen Sie dem Manifest Ihr eigenes Glas und Kuromoji hinzu.

manifest.mf


Main-Class: J4Py
Class-Path: py4j0.8.2.1.jar kuromoji-0.7.7.jar kuryu.jar

Mach es zu einem Glas


$ javac -cp py4j0.8.2.1.jar J4Py.java
$ jar cvfm J4Py.jar manifest.mf J4Py.class

Starten Sie den Gateway Server

Wenn Sie es über den Klassenpfad starten, können Sie es anscheinend auch von der py4j-Seite aus verwenden.

Wenn Sie mit dem Glas beginnen


$ java -jar J4Py.jar

Wenn Sie mit dem Unterricht beginnen


$ java -cp py4j0.8.2.1.jar:kuromoji-0.7.7.jar:kuryu.jar:. J4Py

Code auf der Python-Seite von py4j

Führen Sie dies aus, während der Java Gateway Server ausgeführt wird.

#!/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)

#Selbstgemachtes Glas
kuryu = gateway.jvm.org.kuryu.Sample
print kuryu.bar()
ins = kuryu()
print ins
print ins.foo()

#kuromoji Tokenizer
KuroTokenizer = gateway.jvm.org.atilika.kuromoji.Tokenizer
tokenizer = KuroTokenizer.builder().build();
a = tokenizer.tokenize(u"Ich möchte Sushi essen.")
for token in a:
    print token.getSurfaceForm() + "\t" + token.getAllFeatures()

Ich habe es als Referenz verwendet

Hauptsächlich so seltsam.

http://www.atilika.com/ja/products/kuromoji.html http://py4j.sourceforge.net/py4j_java_gateway.html http://qiita.com/mojaie/items/f16b97b1388f73e56b86

Recommended Posts

Ich möchte ein Glas aus Python verwenden
Ich möchte Ceres Solver aus Python verwenden
Ich möchte MATLAB feval mit Python verwenden
Ich möchte mit Python eine E-Mail von Google Mail senden.
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 2/3
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich wollte die Python-Bibliothek von MATLAB verwenden
Ich möchte R-Datensatz mit Python verwenden
Ich möchte mit Python debuggen
Ich möchte viele Prozesse von Python aus starten
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich möchte eine Python-Umgebung erstellen
Ich möchte Linux auf dem Mac verwenden
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Ich möchte IPython Qt Console verwenden
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Verwenden Sie MySQL aus Python
Verwenden Sie MySQL aus Python
Verwenden Sie BigQuery aus Python.
Verwenden Sie mecab-ipadic-neologd von Python
Ich möchte aus verschiedenen Sprachen eine Verbindung zu PostgreSQL herstellen
Ich möchte mich mit Schlüsselwortargumenten von Python merken
Ich möchte mit Python ein Fenster erstellen
Ich möchte ein Spiel mit Python machen
[Bash] Holen Sie sich die Kraft von Python aus Bash mithilfe der folgenden Dokumentation
Ich möchte verschachtelte Dicts in Python zusammenführen
Ich möchte Passungen aus meinem Kopf machen
Ich möchte -inf nicht mit np.log verwenden
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Ich möchte ip vrf mit SONiC verwenden
Ich möchte APG4b mit Python lösen (Kapitel 2)
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
Ich möchte die Produkte verkaufen, die ich durch Python Scraping Mercari aufgelistet habe
Ich möchte mit Python in eine Datei schreiben
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich möchte den Fortschritt in Python anzeigen!
Verwenden Sie Tor, um eine Verbindung von urllib2 [Python] [Mac] herzustellen.
Python: Entpacken Sie die Standardeingabe mit zipfile
Tipps zum Bearbeiten von numpy.ndarray aus c ++ - Ich möchte einen Iterator verwenden -
Verwenden Sie Python aus Java mit Jython. Ich war auch süchtig danach.
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
Ich möchte den Dateinamen von DataLoader sehen
Selbst Anfänger möchten sagen "Ich verstehe Python voll und ganz"
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich möchte einen Python-Generator viele Male iterieren
Post von Python nach Slack
python3: Verwendung der Flasche (2)
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
Flirte von PHP nach Python
Ich möchte mich mit Backpropagation (tf.custom_gradient) (Tensorflow) selbst verwenden.