Google Colab安装Parsivar Normalizer失败求助
解决Google Colab中安装Parsivar Normalizer的ImportError问题
问题描述
我在Google Colab中安装Parsivar Normalizer时遇到错误,该错误已出现约两周,此前安装无问题。
安装代码:
!pip install parsivar from parsivar import Normalizer my_normalizer = Normalizer()
报错调用栈:
ImportError Traceback (most recent call last) <ipython-input-1-a4ae8568f137> in <cell line: 2>() 1 get_ipython().system('pip install parsivar') ----> 2 from parsivar import Normalizer 3 my_normalizer = Normalizer() 7 frames /usr/local/lib/python3.10/dist-packages/parsivar/__init__.py in <module> ----> 1 from .chunker import FindChunks 2 from .data_helper import DataHelper 3 from .dependency import DependencyParser 4 from .normalizer import Normalizer 5 from .postagger import POSTagger /usr/local/lib/python3.10/dist-packages/parsivar/chunker.py in <module> ----> 1 import nltk 2 3 class FindChunks(): 4 def __init__(self): 5 self.grammar = r""" /usr/local/lib/python3.10/dist-packages/nltk/__init__.py in <module> 132 from nltk.grammar import * 133 from nltk.probability import * --> 134 from nltk.text import * 135 from nltk.tree import * 136 from nltk.util import * /usr/local/lib/python3.10/dist-packages/nltk/text.py in <module> 24 from six import text_type 25 --> 26 from nltk.lm import MLE 27 from nltk.lm.preprocessing import padded_everygram_pipeline 28 from nltk.probability import FreqDist /usr/local/lib/python3.10/dist-packages/nltk/lm/__init__.py in <module> 220 """ 221 --> 222 from nltk.lm.models import ( 223 MLE, 224 Lidstone, /usr/local/lib/python3.10/dist-packages/nltk/lm/models.py in <module> 10 11 from nltk import compat --> 12 from nltk.lm.api import LanguageModel, Smoothing 13 from nltk.lm.smoothing import KneserNey, WittenBell 14 /usr/local/lib/python3.10/dist-packages/nltk/lm/api.py in <module> 15 from six import add_metaclass 16 --> 17 from nltk.lm.counter import NgramCounter 18 from nltk.lm.util import log_base2 19 from nltk.lm.vocabulary import Vocabulary /usr/local/lib/python3.10/dist-packages/nltk/lm/counter.py in <module> 13 from __future__ import unicode_literals 14 --> 15 from collections import Sequence, defaultdict 16 17 from six import string_types ImportError: cannot import name 'Sequence' from 'collections' (/usr/lib/python3.10/collections/__init__.py)
错误原因
该错误源于Python版本兼容性问题:
- Google Colab当前默认使用Python 3.10,而Python 3.3+已将
Sequence这类抽象基类从collections模块迁移至collections.abc模块; - Parsivar依赖的旧版本NLTK仍在代码中从
collections导入Sequence,导致在Python 3.10环境下触发ImportError。
解决方案
方案1:升级NLTK到兼容版本
NLTK 3.8及以上版本已修复此导入问题,直接升级即可:
!pip install --upgrade nltk !pip install parsivar from parsivar import Normalizer my_normalizer = Normalizer()
方案2:手动修复NLTK代码(临时方案)
如果升级后仍有问题,可手动修改NLTK的导入逻辑:
- 运行以下命令定位NLTK文件路径:
import nltk print(nltk.__file__)
- 找到
nltk/lm/counter.py文件,将第15行代码:
from collections import Sequence, defaultdict
修改为:
from collections.abc import Sequence from collections import defaultdict
- 保存后重新运行导入代码。
方案3:指定Parsivar兼容版本
若无需最新版Parsivar,可尝试安装旧版本搭配兼容的NLTK:
!pip install parsivar==0.1.9 !pip install nltk==3.7 from parsivar import Normalizer my_normalizer = Normalizer()
内容的提问来源于stack exchange,提问作者HosseinSedghian
相关产品推荐
相关产品推荐

