使用Jython版本兼容性从Java调用NLTK import的Python函数?

2024-10-08 20:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有NLTK导入的Python函数,我正试图使用Jython从Java调用它。如果有人成功地做到了这一点,请提供您正在使用的Python、Jython和NLTK的版本,因为在我看来,如果它能够工作,您必须获得正确的版本组合。在

我使用的是Python27、nltk3.2.1和Jython 2.7-b2

我可以使用Java和Jython调用一个简单的Python函数,该函数接受一些自由文本并从文本中返回关键字或概念的集合。Python函数是在文件中定义的类“KeyConceptParser”中的“run()”keyConceptParser.py“而工作的Java/Jython代码如下:

String text = "The cat sat on the mat";
PythonInterpreter interpreter = new PythonInterpreter(null);
PyString inputText = new PyString(text);
interpreter.execfile("python/keyConceptParser.py");
PyInstance parser = (PyInstance) interpreter.eval("KeyConceptParser()");
PyList keyConcepts = (PyList) parser.invoke("run", inputText);

但是当我增强keyConceptParser.py包括nltk的导入,由于无法导入nltk,上述代码失败。在

我可以按照fromGetting Python's nltk.wordnet module working for Jython中的建议来解决这个问题,方法是扩展构造PythonInterpreter类的代码,如下所示。。。在

^{pr2}$

再次尝试,现在找到了nltk模块,但这次找不到“future”模块。但是,由于它位于Python的Lib目录中,因此可以通过在路径中使用两个appends而不是一个appends来修复,如下所示。。。在

 sys.path.append(new PyString("C:\\Python27\\Lib"));
 sys.path.append(new PyString("C:\\Python27\\Lib\\site-packages"));

现在找到了“未来”,但“信号”模块丢失。这就是我一直坚持的地方,因为在Python27下载的目录中没有“signal”模块(它一定使用了C语言中的一些东西)。在

从我链接到上面的StackOverflow帖子(超过6岁)看来,人们过去已经让NLTK来使用Java,但是我找不到任何关于各种组件的版本如何协同工作的信息。在

(我使用NLTK的Python代码在Java之外执行时运行良好)

提前谢谢你的帮助


Tags: 模块函数代码py版本newjythonjava

热门问题