赞
踩
本人在学习NLTK之初,为安装nltk的语言数据集。可谓撒费苦心,最终失败。但我都是按照书上的说明做的呀,怎么就是安装不了呢?
- >>> import nltk
- >>> nltk.download()
经分析,发现是默认的下载器下载数据太慢太慢太慢了——根本就没动嘛,也没有任何进度提示。.于是我就找了度娘。找到了官网文档。
一直翻到最后,看到“Manual installation”。于是着手操作。
但是当点开http://www.nltk.org/nltk_data/后,我傻眼了。107项,手动下载岂不是要把人累疯。于是想到用程序解决。
第一步:找到所有包的链接。保存到csv文件,供下一步使用,代码如下:
- import pandas as pd
- import bs4
- import requests
- import lxml
-
- xml = requests.get('https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml')
- html = bs4.BeautifulSoup(xml.text, 'lxml')
- packages = html.find_all('package')
-
- table_list = []
- for pp in packages:
- table_list.append({'name':pp['name'], 'url':pp['url']})
-
- df = pd.DataFrame(table_list)
-
- df.to_csv('nltk.csv')
- print('get nltk url Done!')

第二步:使用下载工具下载数据文件。
这里推荐迅雷,复制url后,能自动识别并下载。
最后一步:定义解压文件的方法,处理url地址,解析出数据文件和文件所在的包(文件夹),并将文件解压。代码如下:
- import pandas as pd
- import zipfile
- import os
-
- def unzipfile(src_file, dest_dir, password=None):
- if password:
- password = password.encode()
- zf = zipfile.ZipFile(src_file)
- try:
- zf.extractall(path=dest_dir, pwd=password)
- except RuntimeError as e:
- print(e)
- finally:
- pass
- zf.close()
-
-
- df = pd.read_csv('nltk.csv')
- prefix = 'https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/'
-
- def cuturl(url):
- folder = url[len(prefix):]
- return "../nltk_data/" + folder[:folder.find('/')] #"../nltk_data/"的设置要根据实际代码运行的位置和想要存放解压文件的路径决定
-
- def getfile(url):
- folder = url[len(prefix):]
- return "../nltk/" + folder[folder.find('/')+1:] # ../nltk/ 的路径为下载工具下载的数据集文件所在路径
-
- df['destfolder'] = df['url'].map(lambda x: cuturl(x))
- df['zipfile'] = df['url'].map(lambda x: getfile(x))
- #df['destfolder'] = df['url'].map(lambda x: getfile(x))
-
- #开始根据df的信息进行解压操作
- for ff in df.values:
- #print(ff)
- print(ff[4],ff[3])
- if not os.path.exists(ff[4]):
- continue
- unzipfile(ff[4], ff[3])
-
- print('Done')

PS:如何你指定的解压路径不是根目录,最后需要将整个nltk_data目录移到某个盘符的根目录下,不然nltk找不到文件。
以上为在Windows 10下的安装步骤,供参考。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。