簡體   English   中英

如何將基於NLTK的ML(機器學習)Python腳本公開為Web服務?

[英]How to expose an NLTK based ML(machine learning) Python Script as a Web Service?

讓我解釋一下我想要實現的目標。 過去在Java平台上工作時,我曾經編寫Java代碼(比如,從MySQL數據庫推送或提取數據等)然后創建一個war文件,它基本上捆綁了所有類文件,支持文件等,並將其置於像Tomcat這樣的servlet容器,它成為一個Web服務,可以從任何平台調用。

在我目前的場景中,我的大部分工作都是用Java完成的,但自然語言處理(NLP)/機器學習(ML)部分是使用NLTK,Scipy,Numpy等庫在Python中完成的。 我正在嘗試在現有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服務,則數據培訓將僅在服務啟動時發生一次,然后服務准備好被調用並使用已經訓練過的引擎。

現在回到這個問題,我對Python中的這些Web服務很新,並且非常感謝有關如何實現這一點的任何指示。還有任何關於實現從Java調用基於NLTK的python腳本的目標的指針,而不使用Web服務方法以及可以部署在生產服務器上以提供良好性能的服務方法也是有幫助的和可觀的。 提前致謝。 僅僅是為了說明,我目前正在Linux機器上運行我的所有代碼,其上安裝了Python 2.6,JDK 1.6。

一種方法是構建XML-RPC服務器,但您可能希望為每個連接分叉一個新進程以防止服務器占用。 我已經寫了一個關於如何解決這個問題的詳細教程: https//speakerdeck.com/timclicks/case-studies-of-python-in-parallel?slal = 68

基於NLTK的系統在每個請求的響應中往往很慢,但是如果有足夠的RAM,則可以實現良好的吞吐量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM