2017-12-23 48 views
0

내가 IPython/Jupyter 노트북에 NLTK을 배우고, 파이썬 3 * 을 iterable`되지 나는 nltk.download_shell()를 실행하고 l을 사용할 수 있습니다 명령을 list 모든 패키지에. 나는 문제없이 전체 목록을 통해 페이지에 Enter을 입력했다.NLTK 오류 'NoneType'개체가 어제

오늘은 nltk.download_shell()입니다. 모든 '패키지'카테고리를 통해 페이지를 이동할 수 있습니다. 그런 다음 '콜렉션'카테고리를 시작합니다. 그것은 all-corpora 모음에 대한 정보를 나열하지만 실패

Collections: 
    [ ] all-corpora......... All the corpora 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-6-bdd77394908d> in <module>() 
----> 1 nltk.download_shell() 

...Full stack trace... 

C:\Users\nnd\AppData\Local\Continuum\Anaconda3\lib\site-packages\nltk\downloader.py in status(self, info_or_id, download_dir) 
    740   # Handle collections: 
    741   if isinstance(info, Collection): 
--> 742    pkg_status = [self.status(pkg.id) for pkg in info.packages] 
    743    if self.STALE in pkg_status: 
    744     return self.STALE 

TypeError: 'NoneType' object is not iterable 

이 코드를 디버깅하고 info 객체의 값을 찾을 수는 다음과 같습니다

(Pdb) info 
<Collection all-nltk> 

나는 참으로하여 all-nltk과에 info.packages을 확인 값 is None.

내 "색인"(즉, 다운로더 _index)이 오래되었거나 잘못되었을 수 있지만 색인에 대해 많이 모른다 고 생각됩니다. 어떤 아이디어이 오류를 방지하는 방법?

* 특정 버전 :

내가 이전에 얻을 오류 관련이있을 수 있습니다

import sys; print(sys.version) 
3.6.0 |Anaconda 4.3.1 (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)] 
import nltk; print(nltk.__version__) 
3.2.2 

편집, 내가 을하려고하면 내가에만 재현 할 수 번 인쇄 오류 _update_index(...)은 (일부 금액에 self.INDEX_TIMEOUT을 설정하여 즉, time.time()-self._index_timestamp보다이하) :

(Pdb) self.INDEX_TIMEOUT = 3000 
(Pdb) self._update_index() 
removing collection member with no package: hmm_treebank_pos_tagger 
removing collection member with no package: hmm_treebank_pos_tagger 
*** AttributeError: 'str' object has no attribute 'id' 


C:\Users\nnd\AppData\Local\Continuum\Anaconda3\lib\site-packages\nltk\downloader.py in _update_index(self, url) 
    855      queue.extend(child.children) 
    856     else: 
--> 857      packages[child.id] = child 
    858    collection.packages = packages.values() 
    859 

AttributeError: 'str' object has no attribute 'id' 

그리고 패키지가 문자열 인 검사 할 때, 그것은 'maxent_treebank_pos_tagger'입니다 :

... 
<Package ycoe> 
<Package rslp> 
maxent_treebank_pos_tagger 
--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-6-bdd77394908d> in <module>() 
----> 1 nltk.download_shell() 

답변