谢谢老师,问题已经解决了!
执行如下命令
import nltk
nltk.download() #执行这个下载语料库命令的时候显示超时,也没有弹出像官方网站说的那个窗口,然后肯定是没有下载成功,怎么办?
In [12]: nltk.download()
Traceback (most recent call last):
File ", line 1, in
nltk.download()
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\downloader.py", line 765, in download
self._interactive_download()
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\downloader.py", line 1115, in _interactive_download
DownloaderGUI(self).mainloop()
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\downloader.py", line 1412, in __init__
self._fill_table()
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\downloader.py", line 1744, in _fill_table
items = self._ds.collections()
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\downloader.py", line 593, in collections
self._update_index()
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\downloader.py", line 954, in _update_index
ElementTree.parse(urlopen(self._url)).getroot()
File "D:\ProgramData\Anaconda3\lib\urllib\request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "D:\ProgramData\Anaconda3\lib\urllib\request.py", line 525, in open
response = self._open(req, data)
File "D:\ProgramData\Anaconda3\lib\urllib\request.py", line 542, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "D:\ProgramData\Anaconda3\lib\urllib\request.py", line 502, in _call_chain
result = func(*args)
File "D:\ProgramData\Anaconda3\lib\urllib\request.py", line 1393, in https_open
return self.do_open(http.client.HTTPSConnection, req,
File "D:\ProgramData\Anaconda3\lib\urllib\request.py", line 1354, in do_open
r = h.getresponse()
File "D:\ProgramData\Anaconda3\lib\http\client.py", line 1347, in getresponse
response.begin()
File "D:\ProgramData\Anaconda3\lib\http\client.py", line 307, in begin
version, status, reason = self._read_status()
File "D:\ProgramData\Anaconda3\lib\http\client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "D:\ProgramData\Anaconda3\lib\socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "D:\ProgramData\Anaconda3\lib\ssl.py", line 1241, in recv_into
return self.read(nbytes, buffer)
File "D:\ProgramData\Anaconda3\lib\ssl.py", line 1099, in read
return self._sslobj.read(len, buffer)
TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
解决建议:通过绕过DNS解析,直接在本地绑定host
在浏览器中打开DNS查询网站http://tool.chinaz.com/dns,输入https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml,然后点击检测,在下方的结果列表中,如下图所示:
ttl值越小,下载速度越快,但是只有台湾那几个ip可以下载吧,不知道为什么ttl比较小的湖南那个没有ip,等会刷新再试试。
先选择台湾中华电信里面第一个
185.199.108.133 [美国 GitHub+Fastly节点]
185.199.109.133 [美国 GitHub+Fastly节点]
185.199.111.133 [美国 GitHub+Fastly节点]
185.199.110.133 [美国 GitHub+Fastly节点]
"C:\Windows\System32\drivers\etc\lmhosts.sam"用记事本打开这个文件
在该文本文件中的末尾加入如下两行命令
#解决https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml下载慢的问题
185.199.108.133 raw.githubusercontent.com
3.然后保存并关闭这个文件
4.然后再在python里面执行nltk.download()命令进行数据下载,看能否下载成功
然后终于可以弹出官网所说的那个窗口了。注意那个窗口不会直接弹出到你面前,需要自己将鼠标划到如图所示的地方,然后点击才能查看。
弹出一个窗口
下载已经进入下载了,如图所示
只能关闭NLTK Downloader窗口,下载终止
python页面提示如下
In [2]: import nltk
...: #
...: nltk.download()
showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1883, in __call__
return self.func(*args)
File "D:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 804, in callit
func(*args)
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\downloader.py", line 2154, in _monitor_message_queue
self._select(msg.package.id)
AttributeError: 'str' object has no attribute 'id'
如果提前终止下载就可能返回True,如下面所示
import nltk
nltk.download()
showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml
Out[2]: True
返回True可不是你下载成功了呀,这一点一定要记住
也有可能出现下面这种错误
可以看到我们下载nltk_data这样一个文件夹是多么的困难,但我们应该是成功下载了部分资料文件的。但想哭
然后试下下面的语句。看到应该是我们自己从其他网站直接下载到一些文件放到C:\Users\Administrator\AppData\Roaming\nltk_data路径下应该就可以了。
nltk.download("nps_chat")
[nltk_data] Downloading package nps_chat to
[nltk_data] C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data] Unzipping corpora\nps_chat.zip.
Out[3]: True
nltk.download("nps_chat")
[nltk_data] Downloading package nps_chat to
[nltk_data] C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data] Package nps_chat is already up-to-date!
Out[4]: True
nltk.download("nps_chat")
[nltk_data] Downloading package nps_chat to
[nltk_data] C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data] Package nps_chat is already up-to-date!
Out[5]: True
可以看到那个文件夹下面有一个corpora文件夹,然后双击进入,可以看到nps_chat已经成功解压
然后执行下面的命令试一下
In [7]: nltk.download("alpino")
[nltk_data] Downloading package alpino to
[nltk_data] C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data] Unzipping corpora\alpino.zip.
Out[7]: True
提示解压alpino文件了,我们截图看下
然后再重新执行nltk.download("alpino") 就会提示alpino 已经升级了。
nltk.download("alpino")
[nltk_data] Downloading package alpino to
[nltk_data] C:\Users\Administrator\AppData\Roaming\nltk_data...
[nltk_data] Package alpino is already up-to-date!
Out[8]: True
也就是说应该是我们把其他的这些库资料从某个地方下载,然后再保存到这个路径下应该就可以了,
可以放置的路径如下,到时候调用资料的时候默认会从如下的这些路径下面去寻找
wnl.lemmatize('countries')
Traceback (most recent call last):
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\corpus\util.py", line 83, in __load
root = nltk.data.find("{}/{}".format(self.subdir, zip_name))
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\data.py", line 585, in find
raise LookupError(resource_not_found)
LookupError:
**********************************************************************
Resource wordnet not found.
Please use the NLTK Downloader to obtain the resource:
import nltk
nltk.download('wordnet')
For more information see: https://www.nltk.org/data.html
Attempted to load corpora/wordnet.zip/wordnet/
Searched in:
- 'C:\\Users\\Administrator/nltk_data'
- 'D:\\ProgramData\\Anaconda3\\nltk_data'
- 'D:\\ProgramData\\Anaconda3\\share\\nltk_data'
- 'D:\\ProgramData\\Anaconda3\\lib\\nltk_data'
- 'C:\\Users\\Administrator\\AppData\\Roaming\\nltk_data'
- 'C:\\nltk_data'
- 'D:\\nltk_data'
- 'E:\\nltk_data'
**********************************************************************
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "
wnl.lemmatize('countries')
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\stem\wordnet.py", line 38, in lemmatize
lemmas = wordnet._morphy(word, pos)
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\corpus\util.py", line 120, in __getattr__
self.__load()
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\corpus\util.py", line 85, in __load
raise e
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\corpus\util.py", line 80, in __load
root = nltk.data.find("{}/{}".format(self.subdir, self.__name))
File "D:\ProgramData\Anaconda3\lib\site-packages\nltk\data.py", line 585, in find
raise LookupError(resource_not_found)
LookupError:
**********************************************************************
Resource wordnet not found.
Please use the NLTK Downloader to obtain the resource:
import nltk
nltk.download('wordnet')
For more information see: https://www.nltk.org/data.html
Attempted to load corpora/wordnet
Searched in:
- 'C:\\Users\\Administrator/nltk_data'
- 'D:\\ProgramData\\Anaconda3\\nltk_data'
- 'D:\\ProgramData\\Anaconda3\\share\\nltk_data'
- 'D:\\ProgramData\\Anaconda3\\lib\\nltk_data'
- 'C:\\Users\\Administrator\\AppData\\Roaming\\nltk_data'
- 'C:\\nltk_data'
- 'D:\\nltk_data'
- 'E:\\nltk_data'
**********************************************************************
从上面的文件夹里去看一下就知道,wordnet那个资料我们没有下载成功,当然从这些路径下找不到。我们只下载成功了nps_chat和alpino
那在哪里可以下载到这些文件呢?打开下面的链接,手动下载那些资源。
https://github.com/nltk/nltk_data
唉,又因为网速问题无法下载
https://github.com/nltk/nltk_data/archive/refs/heads/gh-pages.zip 把这个数据链接随便粘贴到一个网址上,竟然立刻可以下载了
很神奇呀
可以看到已经下载多少,为什么看不见总得文件大小
我们下载完成后得到一个如下图所示的压缩文件,我把文件传到了百度云盘上,有需要的可以下载
链接:https://pan.baidu.com/s/1NIEiOWxxViTj4bzAR5MwJw
提取码:trk6
复制这段内容后打开百度网盘手机App,操作更方便哦
我们讲这个压缩文件解压如下,
然后我们打开里面的packages文件夹如下,这些文件就是我们用的文件。
我们将上面文件夹中的文件复制或者剪贴到C:\\Users\\Administrator\\AppData\\Roaming\\nltk_data下。
在粘贴之前我们需要先做一些准备工作。
如果你的nltk_data文件夹不存在,则你需要重新建立一个nltk_data文件夹,
如果你的nltk_data文件夹存在,但是下面有东西,则需要把这些东西全部删掉。
然后再进行粘贴。粘贴完成后如下图所示:
然后我们就可以执行代码了
import nltk
#nltk.download()如果你的电脑上已经把相关的资源下载好了,就不需要执行这句命令了
from nltk.stem import SnowballStemmer
from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
wnl.lemmatize('countries')
结果已经可以正确执行了