让我解释一下我想要实现的目标。过去在 Java 平台上工作时,我曾经编写 Java 代码(例如,从 MySQL 数据库推送或拉取数据等),然后创建一个 war 文件,该文件基本上捆绑了所有类文件、支持文件等,并将其放在一个像 Tomcat 这样的 servlet 容器,它变成了一个 Web 服务,可以从任何平台调用。
在我目前的情况下,我的大部分工作都是在 Java 中完成的,但是自然语言处理(NLP)/机器学习(ML)部分是在 Python 中使用 NLTK、Scipy、Numpy 等库完成的。我正在尝试在现有 Java 代码中使用这个 Python 引擎的服务。通过 Jython 之类的东西将 Python 代码集成到 Java 并不是那么简单(因为据我所知,Jython 不支持调用任何具有基于 C 的扩展的 Python 模块),所以我认为下一个选择是让它一个 Web 服务,类似于我过去使用 Java Web 服务所做的事情。现在问题的真正症结出现了,我如何将 ML 引擎作为 Web 服务运行并从任何平台调用它,在我当前的场景中,这恰好是 Java。我试着在网上看,寻找各种选项来实现这一点,并找到了 CherryPy、Werkzeug 等,但找不到正确的方法或任何示例代码或任何显示如何调用 NLTK-Python 脚本并通过 Web 提供结果并最终复制功能的东西Java Web 服务提供。在 Python-NLTK 代码中,ML 引擎在大型语料库上进行数据训练(这需要 3-4 分钟),我们不希望 Python 代码在每次调用方法时都经过这一步。如果我将其设为 Web 服务,则数据训练将只发生一次,即服务启动时服务已准备好被调用并使用已训练的引擎。并最终复制 Java Web 服务提供的功能。在 Python-NLTK 代码中,ML 引擎在大型语料库上进行数据训练(这需要 3-4 分钟),我们不希望 Python 代码在每次调用方法时都经过这一步。如果我将其设为 Web 服务,则数据训练将只发生一次,即服务启动时服务已准备好被调用并使用已训练的引擎。并最终复制 Java Web 服务提供的功能。在 Python-NLTK 代码中,ML 引擎在大型语料库上进行数据训练(这需要 3-4 分钟),我们不希望 Python 代码在每次调用方法时都经过这一步。如果我将其设为 Web 服务,则数据训练将只发生一次,即服务启动时服务已准备好被调用并使用已训练的引擎。
现在回到问题上来,我对 Python 中的这个 Web 服务的东西还很陌生,并且希望能提供任何关于如何实现这一点的指针。此外,任何关于实现从 Java 调用基于 NLTK 的 python 脚本的目标的指针,而不使用 web服务方法并且可以部署在生产服务器上以提供良好的性能也将是有帮助和可观的。提前致谢。请注意,我目前正在一台安装了 Python 2.6、JDK 1.6 的 Linux 机器上运行我的所有代码。