将Java的gensim python与jython结合使用

问题描述 投票:1回答:1

我想在python代码中使用gensim库,并且需要从Java执行该代码。

以下是python代码,send2vec.py:

import gensim
sentences = gensim.models.doc2vec.LabeledLineSentence('/tmp/sentence.tmp')
model = gensim.models.doc2vec.Doc2Vec(sentences, size=10, window=5, min_count=2, workers=4)
model.save_word2vec_format('/tmp/sentenceVectors.txt')

代码在独立模式下运行良好,即,当由以下人员执行时:

python sent2vec.py

但是我需要从Java代码中调用此函数。我尝试使用Jython,但出现错误。我的Java代码如下所示:

StringWriter writer = new StringWriter(); //output will be stored here
ScriptEngineManager manager = new ScriptEngineManager();
ScriptContext context = new SimpleScriptContext();

context.setWriter(writer); //configures output redirection
ScriptEngine engine = manager.getEngineByName("python");
engine.eval(new FileReader("sent2vec.py"), context);
System.out.println(writer.toString());

我遇到此错误:

Exception in thread "main" javax.script.ScriptException: ImportError: No module named gensim in <script> at line number 1
at org.python.jsr223.PyScriptEngine.scriptException(PyScriptEngine.java:202)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:42)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:47)
Caused by: Traceback (most recent call last):
File "<script>", line 1, in <module>
ImportError: No module named gensim

at org.python.core.Py.ImportError(Py.java:328)
at org.python.core.imp.import_first(imp.java:877)
at org.python.core.imp.import_module_level(imp.java:972)
at org.python.core.imp.importName(imp.java:1062)
at org.python.core.ImportFunction.__call__(__builtin__.java:1280)
at org.python.core.PyObject.__call__(PyObject.java:431)
at org.python.core.__builtin__.__import__(__builtin__.java:1232)
at org.python.core.imp.importOne(imp.java:1081)
at org.python.pycode._pyx0.f$0(<script>:5)
at org.python.pycode._pyx0.call_function(<script>)
at org.python.core.PyTableCode.call(PyTableCode.java:167)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1386)
at org.python.core.__builtin__.eval(__builtin__.java:497)
at org.python.core.__builtin__.eval(__builtin__.java:501)
at org.python.util.PythonInterpreter.eval(PythonInterpreter.java:259)
at org.python.jsr223.PyScriptEngine.eval(PyScriptEngine.java:40)
... 3 more

任何帮助将不胜感激。谢谢。

java python jython gensim
1个回答
-1
投票

抱歉,您找到了此问题的解决方案吗?我打算做类似的方法。谢谢

© www.soinside.com 2019 - 2024. All rights reserved.