2015-10-17 129 views
7

我正在嘗試爲Python 3.4安裝NLTK。實際的NLTK模塊似乎安裝正常。然後我跑NLTK數據過時 - Python 3.4

import nltk 

nltk.download() 

並選擇下載所有內容。然而,完成後,窗口只是說'過時'。我嘗試刷新和下載,但它保持'過時',如下所示:NLTK Window 1

我在網上查找並嘗試各種修復程序,但我還沒有找到任何幫助我的情況。

我也嘗試手動查找缺少的部分,這些部分原來是「打開多語言Wordnet」和「Wordnet」。以下是我如何找到哪些零件丟失:Open Multilingual Wordnet

我該怎麼辦?我應該卸載並重新安裝NLTK?我還沒有真正找到刪除軟件包的方法(手動刪除軟件除外)。

編輯:關於方案2和方案3: 更多的澄清在方案2問題:

如果事情已經成功地下載,這是輸出:

>>> nltk.download('subjectivity') 
[nltk_data] Downloading package subjectivity to 
[nltk_data]  C:\Users\Shane\AppData\Roaming\nltk_data... 
[nltk_data] Package subjectivity is already up-to-date! 
True 

然而,對於「共發現'和 'OMW',這是當我重新下載會發生什麼:

>>> nltk.download('omw') 
[nltk_data] Downloading package omw to 
[nltk_data]  C:\Users\Shane\AppData\Roaming\nltk_data... 
[nltk_data] Unzipping corpora\omw.zip. 
True 
+1

您使用哪種操作系統? – alvas

+0

我使用Windows 7 – pyman

回答

8

簡而言之:

不要使用GUI,在python解釋器中添加所有軟件包。

$ python3 
>>> import nltk 
>>> nltk.download('all') 

在長:

這可能是因爲最近加入的Open Multilingual WordNet和東西不與NLTK下載GUI界面和指數權工作。

解決方案1:

只需使用nltk.download() GUI和下載這兩個包而不選擇所有。 (可能無法正常工作,但值得嘗試)

解決方案2:

>>> import nltk 
>>> nltk.download('wordnet') 
>>> nltk.download('omw') # Open Multilingual WordNet 

解決方案3:

nltk.download('all')

通過Python解釋器分別安裝包檢查索引中的所有軟件包,如果它們不可用,請下載它們。

>>> import nltk 
>>> nltk.downlad('all') 

注:如果有任何文件被損壞可能是由於破互聯網連接,只需找到其中NLTK數據存儲,然後用溶液3

繼續要查找nltk_data的存儲目錄, nltk.data.path存儲可能的位置:

>>> import nltk 
>>> nltk.data.path 
['/home/alvas/nltk_data', '/usr/share/nltk_data', '/usr/local/share/nltk_data', '/usr/lib/nltk_data', '/usr/local/lib/nltk_data'] 

由於的點數據下載使用它們,知道你不會錯過你所需要的部件,如果是那樣的wordnetomw,你可以試試這個:

>>> from nltk.corpus import wordnet as wn 
>>> wn.synsets('bank')[0] 
Synset('bank.n.01') 
>>> wn.synsets('bank')[0].lemma_names('spa') 
['margen', 'orilla', 'vera'] 
>>> wn.synsets('bank')[0].lemma_names('fre') 
['rive', 'banque'] 

不要擔心這麼多,因爲在所示的情況在GUI上。一旦nltk.download('all')完成沒有錯誤,這意味着你有NLTK支持的所有語料庫和模型。

但作爲一個很好的做法,請提出在https://github.com/nltk/nltk_data/issues的問題,使開發人員可以檢查問題是否可以被複制。顯示更多的錯誤的打印屏幕。前後提出的解決方案後,太=)

+0

感謝您的回覆。我已經嘗試瞭解決方案1,但沒有解決問題。我也嘗試瞭解決方案2,但是當我去到圖形用戶界面後,它仍然說'過時'。此外,如果我嘗試通過該方法重新下載'wordnet'和'omw',它將重新下載它,就好像它之前沒有(而不是說「xyz已經是最新的」)。 我剛剛嘗試過解決方案3.我如何判斷它是否正常工作?去圖形用戶界面,它仍然表示'wordnet'和'omw'的'過時'。如果我在解決方案3之後應用解決方案2,它會重新下載它,好像它不在那裏一樣。 – pyman

+0

請參閱上面的解決方案2的問題(抱歉,我不能正確地在這裏輸入代碼) – pyman

+0

GUI和命令行檢查是相同的 - 當發生這種情況,這通常是因爲自NLTK指數的外部包裝已經改變(通過https: //github.com/nltk/nltk_data/blob/gh-pages/index.xml)最後生成...因此「索引已過時」可能意味着您不是最新的,因爲您擁有舊版本的軟件包或因爲您擁有較新的版本。 – MartyMacGyver

1

不要擔心「過時」的消息,這是你的時間浪費。只需繼續並使用nltk即可。

的NLTK的數據資源幾乎完全相互獨立的。您可能永遠沒有理由使用任何標記爲「過時」的軟件包,但即使您這樣做了,它們實際上也可能完全安裝並可用。

不過,它也發生在我身上,這是我發現的:似乎下載器會認爲資源「過時」,如果它檢測到其下載文件夾中不在資源清單中的文件。也許這有時是由錯誤配置的資源引起的,但是如果您使用目錄瀏覽器訪問了有問題的資源,則可能導致GUI或編輯器遺留的雜散文件或誰知道什麼會導致不匹配。例如,在Mac上,Finder將在訪問的目錄中保留一個.DS_Store文件。

但正如我所說,「問題」是不是真的值得固定。享受NLTK!

PS。據我所知,刷新nltk_data目錄的最好(也是唯一的)方法是刪除整個文件並重新下載。