1. 程式人生 > 實用技巧 >(轉載) 安裝nltk遇到的坑:下載失敗+安裝成功但匯入不了

(轉載) 安裝nltk遇到的坑:下載失敗+安裝成功但匯入不了

作者:野指標呀

地址:https://blog.csdn.net/mjj1024/article/details/105618784

在jupyter notebook上執行程式碼時:

1     import nltk
2     paragraph = "i am a good boy ! are you ok? hahaha i am fine"
3     words_list = nltk.word_tokenize(paragraph)
4     print(words_list)

出現錯誤:

1     ModuleNotFoundError Traceback (most recent call last)
2 <ipython-input-4-55bf564de021> in <module> 3 ----> 1 import nltk 4 2 paragraph = "i am a good boy ! are you ok? hahaha i am fine" 5 3 words_list = nltk.word_tokenize(paragraph) 6 4 print(words_list) 7 8 ModuleNotFoundError: No module named 'nltk'

顯示沒有nltk這個模組。

然後在cmd和conda裡分別執行pip list和conda list,發現nltk都已經安裝好。之後搜了一個部落格,才知道還要下載nltk語料包。

嘗試了一下自動下載:

在idle 3.7(按照自己電腦上的版本)中執行程式碼:

1     >>> import nltk
2     >>> nltk.download()

跳出來NlTK Downloder框,然後出現了getaddrinfo failed錯誤,貌似是伺服器的問題。

之後看部落格說是把NlTK Downloder裡的Server Index的內容:

https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml

換成:http://www.nltk.org/nltk_data/

點選下載時又出現錯誤相同錯誤:getaddrinfo failed

搜了一堆部落格嘗試後無果,沒辦法只能乖乖手動安裝nltk。

手動安裝有點麻煩,但也沒辦法。

不過有看到一個大佬寫了個程式碼裝的,看起來很厲害:

手動安裝Python NLTK語言包

我自己是手動下載,然後解壓。

在github上下載語料庫:https://github.com/nltk/nltk_data

下載之後把裡面的packages檔名改成nltk_data(裡面的壓縮包都要解壓),然後放在該放的路徑下。
檢視該放的路徑:可以先執行一段程式碼(在idle中執行),錯誤提示裡會給出路徑,比如下面:

 1     >>> import nltk
 2     >>> paragraph = "i am a good boy ! are you ok? hahaha i am fine"
 3     >>> words_list = nltk.word_tokenize(paragraph)
 4     Traceback (most recent call last):
 5     File "<pyshell#5>", line 1, in <module>
 6     words_list = nltk.word_tokenize(paragraph)
 7     File "C:\Program Files\Python37\lib\site-packages\nltk\tokenize\__init__.py", line 144, in word_tokenize
 8     sentences = [text] if preserve_line else sent_tokenize(text, language)
 9     File "C:\Program Files\Python37\lib\site-packages\nltk\tokenize\__init__.py", line 105, in sent_tokenize
10     tokenizer = load('tokenizers/punkt/{0}.pickle'.format(language))
11     File "C:\Program Files\Python37\lib\site-packages\nltk\data.py", line 868, in load
12     opened_resource = _open(resource_url)
13     File "C:\Program Files\Python37\lib\site-packages\nltk\data.py", line 993, in _open
14     return find(path_, path + ['']).open()
15     File "C:\Program Files\Python37\lib\site-packages\nltk\data.py", line 701, in find
16     raise LookupError(resource_not_found)
17     LookupError:
18     **********************************************************************
19     Resource [93mpunkt[0m not found.
20     Please use the NLTK Downloader to obtain the resource:
21      
22     [31m>>> import nltk
23     >>> nltk.download('punkt')
24     [0m
25     For more information see: https://www.nltk.org/data.html
26      
27     Attempted to load [93mtokenizers/punkt/english.pickle[0m
28      
29     Searched in:
30     - 'C:\\Users\\馬靜靜/nltk_data'
31     - 'C:\\Program Files\\Python37\\nltk_data'
32     - 'C:\\Program Files\\Python37\\share\\nltk_data'
33     - 'C:\\Program Files\\Python37\\lib\\nltk_data'
34     - 'C:\\Users\\馬靜靜\\AppData\\Roaming\\nltk_data'
35     - 'C:\\nltk_data'
36     - 'D:\\nltk_data'
37     - 'E:\\nltk_data'
38     - ''
39     **********************************************************************

這一部分就是可以放nltk_data的路徑:

 1     Searched in:
 2     - 'C:\\Users\\馬靜靜/nltk_data'
 3     - 'C:\\Program Files\\Python37\\nltk_data'
 4     - 'C:\\Program Files\\Python37\\share\\nltk_data'
 5     - 'C:\\Program Files\\Python37\\lib\\nltk_data'
 6     - 'C:\\Users\\馬靜靜\\AppData\\Roaming\\nltk_data'
 7     - 'C:\\nltk_data'
 8     - 'D:\\nltk_data'
 9     - 'E:\\nltk_data'
10     - ''

我解壓完後,直接把資料夾 ( packages檔名改成nltk_data的資料夾 ) 放在C:\\Users\\馬靜靜\\下。
再執行程式碼就ok了。

1     >>> import nltk
2     >>> paragraph = "i am a good boy ! are you ok? hahaha i am fine"
3     >>> words_list = nltk.word_tokenize(paragraph)
4     >>> print(words_list)
5     ['i', 'am', 'a', 'good', 'boy', '!', 'are', 'you', 'ok', '?', 'hahaha', 'i', 'am', 'fine']

但是,又發現在idle中和pycharm中執行都沒有問題,在jupyter notebook中執行依然是找不到模組。

又搜了一堆部落格,大概明白了是因為jupyter和python下載包的路徑不同,導致在jupyter執行時找不到包。

嘗試過重新install nltk、修改環境變數等操作依然無果,後來看到一個部落格(python Jupyter不能匯入外部包----解決方案)找到了解決方法,感謝這位小可愛。