2016-07-13 43 views
0

我正在開發一個PHP網站。我有一個額外的要求來建立一個推薦系統。在這種情況下,Python是最好的。我已經開發了Python中的推薦系統,它運行良好。現在我想把python推薦系統和我的PHP網站結合起來。當我從我的PHP網頁調用python文件時,我得到了錯誤。使用php的NLTK錯誤

Resource u'tokenizers/punkt/english.pickle' not found. Please 
    use the NLTK Downloader to obtain the resource: >>> 
    nltk.download() 

我的所有代碼都在我的本地wamp服務器中。我正在使用PHP 5.6.19WAMP 3.0.4Python 2.7.11 任何人都可以幫助解決此問題嗎?

+0

如果該文件確實是在那裏看,檢查權限 –

+0

歡迎堆棧溢出!請包括[最小完整示例](http://stackoverflow.com/help/mcve)。另一個有用的鏈接:[如何問一個好問題](http://stackoverflow.com/help/how-to-ask) – xgord

+0

感謝您的快速回復。 我已經將我的python代碼移到了我的PHP網站根文件夾中。我放。我用完全控制改變了我的trm(python文件夾)權限。我有我的php_python.php文件在trm中。所以我從同一目錄下的php_python.php文件調用call.py文件。 –

回答

0

我找到了解決我的問題的方法。 當我從python shell運行代碼時,它能夠找到「nltk_data」文件夾,但是當我試圖從PHP執行相同的代碼時,無法訪問此文件夾。 在導入nltk庫後,我手動添加了「nltk_data」路徑,如下所示在我的Python代碼中,它已經解決了我的問題。

import nltk nltk.data.path.append('c:/users/.../AppData/Roaming/nltk_data/')

+0

好的工作。事實上,nltk會查看其數據的標準位置列表,因此移動它或更改用戶會導致問題。由於您是第一個找到問題解決方案的人,請點擊左邊的大複選標記以「接受」您自己的答案。它標誌着你的問題已經解決。 – alexis

0

nltk.download()應該從以root權限啓動的Python shell運行。在Debian上,例如,su,(yourrootpassword)pythonnltk.download()。你應該能夠在那裏下載所有的東西。

對於NLTK的導入不足以使用它。您需要下載所有的語料庫和標記器以利用它。

+0

感謝您的回覆@Ares。當我在python shell中執行我的代碼時,它非常完美。問題是當我從我的PHP文件調用該python文件。你能幫助我嗎? –

+0

您能否將您在Python和PHP中使用的代碼編輯爲原始問題? – Ares

+0

我無法添加完整的代碼,但我已將我的代碼上傳到Git。你可以從這裏下載它:https://github.com/mitulparekh90/temp/tree/master/Collaborative –