まず第一に、私はJavaコーディングのためにMacBookでEclipseを使用しています。「自然言語処理のために」NLTKを使用するPythonコードを作成しましたが、うまく機能しました。Javaから単純なPythonコードを呼び出そうとしましたが、期待どおりに機能しました。
しかし、NLTKを使用するPythonコードを呼び出そうとすると、importステートメントが失敗します: "ImportError:No module named nltk"
PythonはNLTKライブラリを見つけることができたようですが、Javaからは見つけることができませんでした。
PythonコードとJavaコードの両方でimportステートメントを使用しようとしましたが、うまくいきませんでした。
Pythonコードは次のとおりです。
#!/usr/local/bin/python
# coding: UTF-8
import os, sys
from nltk.tokenize import word_tokenize # Tokenizer
class RTE:
def WordPhraseRate(self, Text):
T_tokens = word_tokenize(Text)
.
.
.
そして、これがJavaコードです。
import org.python.util.*;
import org.python.core.*;
import org.python.util.PythonInterpreter;
public class NLU_RTE
{
public PythonInterpreter interpreter = null;
public NLU_RTE()
{
PythonInterpreter.initialize(System.getProperties(), System.getProperties(), new String[0]);
this.interpreter = new PythonInterpreter();
}
void execfile( final String fileName )
{
this.interpreter.execfile(fileName);
}
PyInstance createClass( final String className, final String opts )
{
return (PyInstance) this.interpreter.eval(className + "(" + opts + ")");
}
public static void main( String gargs[] )
{
NLU_RTE ie = new NLU_RTE();
ie.execfile("/Users/Desktop/nlu.py");
ie.interpreter.exec("from nltk.tokenize import word_tokenize # Tokenizer");
String T="About two weeks before the trial started, I was in Shapiro's office in Century City."; // Text
ie.interpreter.set("T", T);
PyObject answer = ie.interpreter.eval("RTE('None').WordPhraseRate(T)");
System.out.print(answer.toString());
}
}