一、问题描述
Python的自然语言处理库NLTK在安装之后需要下载一些data文件才能使用。官方比较推荐的方式是直接运行下载data的代码:
import nltk
nltk.download('punkt')
但是实际操作之后发现由于网络原因无法下载成功。
除了运行代码之外,官方还推荐了两种下载数据包的方法:命令行执行安装命令以及手动添加。由于命令行执行安装命令也需要网络顺畅,跟运行代码本质上是一样的,所以我选择了比较稳妥的手动添加方式。
二、解决方法(以下载punkt相关数据为例)
第1步:先把全部data下载到电脑里。这里我提供一个我自己存放这些data的网盘地址: https://pan.baidu.com/s/1HrcWaPGAMx3eXouURHGZJA 提取码: 9aue
第2步:解压下载下来的data,存放到电脑里合适的位置。我放到了D:\nltk_data目录下。目录结构如图所示:
D:\nltk_data\
└─tokenizers
└─punkt
│ czech.pickle
│ danish.pickle
│ dutch.pickle
│ english.pickle
│ estonian.pickle
│ finnish.pickle
│ french.pickle
│ german.pickle
│ greek.pickle
│ italian.pickle
│ norwegian.pickle
│ portuguese.pickle
│ README
│ slovene.pickle
│ spanish.pickle
│ swedish.pickle
│ turkish.pickle
│
└─PY3
czech.pickle
danish.pickle
dutch.pickle
english.pickle
estonian.pickle
finnish.pickle
french.pickle
german.pickle
greek.pickle
italian.pickle
norwegian.pickle
portuguese.pickle
README
slovene.pickle
spanish.pickle
swedish.pickle
turkish.pickle
可以看到,这些pickle文件在punkt目录里保存了一份,又在punkt下的PY3目录里保存了一份,这是因为NLTK库下的data.py模块中会从这两个路径读取数据,少一份都会报错。所以,大家也要这样构造目录结构,把文件保存两份。
第3步:创建环境变量,指向顶层目录D:\nltk_data。win10系统创建环境变量方法如下:
查看高级系统设置->环境变量->系统变量->新建->填写变量名和变量值->每个窗口都点击“确定”
第4步:检验数据是否添加成功。可以运行下面的代码:
from nltk import word_tokenize
input = "What's the best way to split a sentence into words?"
print(word_tokenize(input))
运行结果是:['What', "'s", 'the', 'best', 'way', 'to', 'split', 'a', 'sentence', 'into', 'words', '?']
如果得到了正确的切分结果,那就说明数据添加成功了。