2017-03-18 25 views
0

我有一段代码很好地工作了一阵子。NLTK TypeError:'str'和'int'的实例之间不支持'<'

import nltk 
import pickle 

from nltk.tokenize import word_tokenize 
from nltk.classify import ClassifierI 
from statistics import mode 

我有nltk正确安装,我昨天没有得到这个问题。据了解,没有任何变化。

下面是完整的堆栈跟踪,

Traceback (most recent call last): 
    File "C:\Users\student\Desktop\asd.py", line 1, in <module> 
    import nltk 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\__init__.py", line 128, in <module> 
    from nltk.chunk import * 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\chunk\__init__.py", line 157, in <module> 
    from nltk.chunk.api import ChunkParserI 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\chunk\api.py", line 13, in <module> 
    from nltk.parse import ParserI 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\parse\__init__.py", line 79, in <module> 
    from nltk.parse.transitionparser import TransitionParser 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\nltk\parse\transitionparser.py", line 21, in <module> 
    from sklearn.datasets import load_svmlight_file 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\__init__.py", line 57, in <module> 
    from .base import clone 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\base.py", line 12, in <module> 
    from .utils.fixes import signature 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\__init__.py", line 11, in <module> 
    from .validation import (as_float_array, 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\validation.py", line 18, in <module> 
    from ..utils.fixes import signature 
    File "C:\Users\student\AppData\Local\Programs\Python\Python36\lib\site-packages\sklearn\utils\fixes.py", line 406, in <module> 
    if np_version < (1, 12, 0): 
TypeError: '<' not supported between instances of 'str' and 'int' 
+1

你昨天更新了任何python模块吗? ESP。 'numpy'还是'scipy'?这听起来很疯狂,但我相信'gensim' .whl安装比单独安装'numpy','scipy','sklearn'和'nltk'多,所以这可能有助于'pip安装-U gensim',然后'pip install - U scikit-learn',然后'pip install -U nltk'。 – alvas

+1

顺便提一句,'nltk'被称为在python3.6上抛出错误/弃用警告。 – alvas

回答

1

看起来你不知何故结束了numpy版本1.11.2rc1。 Scikit的fixes.py将其转换为三重(1, 11, '2rc1'),并带来不可避免的结果。

由于当前版本是1.12.1,我认为解决方案是显而易见的。

1

我最好的猜测是,np_version(在堆栈跟踪的底部参考价值)已经成为某种方式损坏,现在已经是字符串的元组,或一些其他的数据类型不是int的元组,这是代码在if np_version < (1, 12, 0):行中比较的数据类型。我会建议重新安装nltk,虽然这可能不是一个明确的解决方案。发生版本不匹配可能会导致新版本使用字符串元组来存储版本号。如果是这样的话,尝试安装旧版本的nltk可能是个好主意,尽管重装可能会解决问题。希望这可以帮助!

相关问题