调用nltk.word_tokenize报错,nltk.download('punkt')返回false求助
解决NLTK punkt资源下载失败的问题
问题场景
运行以下代码时触发资源缺失错误:
df['num_words'] = df['text'].apply(lambda x:len(nltk.word_tokenize(x)))
错误信息:
Resource punkt not found. Please use the NLTK Downloader to obtain the resource: >>> import nltk >>> nltk.download('punkt') For more information see: https://www.nltk.org/data.html Attempted to load tokenizers/punkt/english.pickle
尝试nltk.download('punkt')返回False,试过以下SSL绕过代码和更换网络,问题仍未解决:
import nltk import ssl try: _create_unverified_https_context = ssl._create_unverified_context except AttributeError: pass else: ssl._create_default_https_context = _create_unverified_https_context nltk.download()
解决方案
1. 手动安装punkt资源
- 获取punkt资源包:找到NLTK官方提供的punkt资源压缩包(包含
tokenizers/punkt目录下的相关文件) - 查看本地NLTK数据存储路径:运行以下代码获取可用路径
import nltk print(nltk.data.path) - 在上述路径中的任意一个目录下,创建
tokenizers/punkt文件夹,将下载的资源包解压到该文件夹内,确保english.pickle等核心文件存在。
2. 指定下载路径并检查权限
- 若默认路径无写入权限,手动指定有权限的自定义路径下载:
nltk.download('punkt', download_dir='/your/custom/writable/path') - Linux/macOS用户可尝试用
sudo提升权限运行下载命令;Windows用户以管理员身份打开终端执行下载操作。
3. 更换资源下载源
使用国内镜像源加速资源获取(需配置NLTK适配对应镜像),或直接从镜像站点下载资源包后手动安装。
内容的提问来源于stack exchange,提问作者Aryan Shriva
相关产品推荐
相关产品推荐

