nltk 的分词器punkt: ssl问题无法下载

报错:

LookupError:
**********************************************************************
  Resource punkt not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download(‘punkt‘)

  Attempted to load tokenizers/punkt/english.pickle

  Searched in:
    - ‘/home/a/nltk_data‘
    - ‘/home/a/anaconda3/envs/py2/nltk_data‘
    - ‘/home/a/anaconda3/envs/py2/share/nltk_data‘
    - ‘/home/a/anaconda3/envs/py2/lib/nltk_data‘
    - ‘/usr/share/nltk_data‘
    - ‘/usr/local/share/nltk_data‘
    - ‘/usr/lib/nltk_data‘
    - ‘/usr/local/lib/nltk_data‘
    - u‘‘
**********************************************************************

  

解决方案:

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("punkt")

  



补充材料:

SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

今天想试用一下百度的语音识别API,附带步骤:

1. 先去百度开放云平台注册,成为开发者,审核可能需要时间的,我去年申过现在账号还在

2. 然后创建一个应用

3.为创建完的应用添加服务,有俩,语音识别和语音生成

4. 这样我就有一个调用他语音识别接口的access_token了,这个token由于我采用的是API For Rest,要拿API_key和secret_key通过一个http请求获得,问题就出在这儿了

我用request按照他文档的样子Post了一下,又Get了一下都报一个验证失败的错误。

requests.post(‘https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxxxxx&client_secret=xxxxxxx‘).content

requests.get(‘https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxxxxx&client_secret=xxxxxxx‘).content

他告诉我:

SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)

找了一下,有人说原因是这样的:

Python 2.7.9 之后引入了一个新特性
当你urllib.urlopen一个 https 的时候会验证一次 SSL 证书 
当目标使用的是自签名的证书时就会爆出一个 
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)> 的错误消息

确实我用urllib试了一下结果一样,requests跟urllib是一样的。

那么要解决这个问题,PEP-0476的文档说

For users who wish to opt out of certificate verification on a single connection, they can achieve this by providing the contextargument to urllib.urlopen :

import ssl

# This restores the same behavior as before.
context = ssl._create_unverified_context()
urllib.urlopen("https://no-valid-cert", context=context)
It is also possible, though highly discouraged , to globally disable verification by monkeypatching the ssl module in versions of Python that implement this PEP:

import ssl

try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn‘t verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn‘t support HTTPS verification
ssl._create_default_https_context = _create_unverified_https_context
就是说你可以禁掉这个证书的要求,urllib来说有两种方式,一种是urllib.urlopen()有一个参数context,把他设成ssl._create_unverified_context或者修改现在的全局默认值

_create_unverified_https_context

ssl._create_default_https_context

ssl._create_unverified_context

测试了一下,确实可以,返回了几个token,那么requests呢,难道必须设置全局变量吗。其实request的post和get都有一个叫verify的参数,把他设成False就可以了。

print requests.get(‘https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=xxxxx&client_secret=xxxxxxxx‘, verify=False).content

---------------------
作者:nankaizhl
来源:CSDN
原文:https://blog.csdn.net/xiaopangxia/article/details/49908889
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/sddai/p/10543359.html

时间: 2024-10-03 22:38:35

nltk 的分词器punkt: ssl问题无法下载的相关文章

solr8.2 环境搭建 配置中文分词器 ik-analyzer-solr8 详细步骤

一.下载安装Apache Solr 8.2.0 下载地址:http://lucene.apache.org/solr/downloads.html 因为是部署部署在windows系统上,所以下载zip压缩包即可. 下载完成后解压出来. 二.启动solr服务 进入solr-7.3.0/bin目录: Shift+右键 在此处打开命令窗口: 在控制台输入以下命令: solr start -p 9090 看到Started Solr server on port 9090. Happy searchin

IK 分词器和ElasticSearch集成使用

一.IK分词器简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本.最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件.新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现. IK分词器3.0的特性如下: 1)采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的

lucene分词器中的Analyzer,TokenStream, Tokenizer, TokenFilter

分词器的核心类: Analyzer:分词器 TokenStream: 分词器做好处理之后得到的一个流.这个流中存储了分词的各种信息,可以通过TokenStream有效的获取到分词单元. 以下是把文件流转换成分词流(TokenStream)的过程 首先,通过Tokenizer来进行分词,不同分词器有着不同的Tokenzier,Tokenzier分完词后,通过TokenFilter对已经分好词的数据进行过滤,比如停止词.过滤完之后,把所有的数据组合成一个TokenStream:以下这图就是把一个re

IK分词器 整合solr4.7 含同义词、切分词、停止词

IK分词器如果配置成 <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" is

solr5.5.4整合IK分词器

1.下载IK分词器支持5.5.4的     http://download.csdn.net/detail/wang_keng/9535491 2.需要把分析器的jar包添加到solr工程中的tomcat的WEB-INF/lib下   cp IKAnalyzer2012FF_u2.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/ 3.需要把IKAnalyzer需要的扩展词典及停用词词典.配置文件复制到solr工程的WEB-INF/class

Lucene系列:(6)分词器

1.什么是分词器 采用一种算法,将中英文本中的字符拆分开来,形成词汇,以待用户输入关健字后搜索 2.为什么要分词器 因为用户输入的搜索的内容是一段文本中的一个关健字,和原始表中的内容有差别,但作为搜索引擎来讲,又得将相关的内容搜索出来,此时就得采用分词器来最大限度匹配原始表中的内容. 3.分词器工作流程 (1)按分词器拆分出词汇 (2)去除停用词和禁用词 (3)如果有英文,把英文字母转为小写,即搜索不分大小写 4.演示常用分词器测试 这里测试需要引入IKAnalyzer3.2.0Stable.j

[Nutch]指定LUKE的分词器

在上一篇博文我们有介绍给Solr配置中文分词器mmseg4j,那么我们在LUKE工具中如何配置对应的中文分词器进行查看呢?本篇博文将详细进行解释. 1. 下载中文分词器 由于我们使用的luke是4.0版本的,只能使用mmseg4j的1.9.1版本,因为1.8.5的mmseg4j版本与4.0版本的luke有冲突,请点击下载1.9.1版本的mmseg4j-1.9.1. 2. luke设置mmseg4j 2.1 加压mmseg4j-1.9.1 解压后会有一个dist目录: 在dist目录下面会有3个j

一种拼音分词器的JAVA实现

搜索中的分词器有很多种,包括中文.英文,一般的网站都会有站内搜索功能,也就是对用户输入的内容进行处理,本文对中文的全拼实现了一 个分词器,原理很简单,就是模式匹配.根据中文全拼的特点,即声母和韵母配对,首先列举出所有的声母,再分别列举出所有声母对应的韵母 集,分词的过程就是遍历匹配的过程.具体代码如下: import java.util.ArrayList; public class SpellTool { static String result = "";// 最后要显示的结果 p

重写lucene.net的分词器支持3.0.3.0版本

lucene.net中每个分词器都是一个类,同时有一个辅助类,这个辅助类完成分词的大部分逻辑.分词类以Analyzer结尾,辅助类通常以Tokenizer结尾.分类词全部继承自Analyzer类,辅助类通常也会继承某个类. 首先在Analysis文件夹下建立两个类,EasyAnalyzer和EasyTokenizer. 1 using Lucene.Net.Analysis; 2 using System.IO; 3 4 namespace LuceneNetTest 5 { 6 public