You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决ImportError:无法从pke.readers导入'SpacyDocReader'?

问题:pke库导入错误及降级后出现KeyError

我首次在Stack Overflow发帖,在Jupyter Notebook中运行以下代码时遇到导入错误:

import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
import string
import pke
import traceback

def get_nouns_multipartite(content):
    out=[]
    try:
        extractor = pke.unsupervised.MultipartiteRank()
        extractor.load_document(input=content)
        # 候选词不包含标点或停用词
        pos = {'PROPN','NOUN'}
        stoplist = list(string.punctuation)
        stoplist += ['-lrb-', '-rrb-', '-lcb-', '-rcb-', '-lsb-', '-rsb-']
        stoplist += stopwords.words('english')
        extractor.candidate_selection(pos=pos, stoplist=stoplist)
        # 构建Multipartite图并通过随机游走排序候选词
        extractor.candidate_weighting(alpha=1.1,
                                      threshold=0.75,
                                      method='average')
        keyphrases = extractor.get_n_best(n=15)
        
        for val in keyphrases:
            out.append(val[0])
    except:
        out = []
        traceback.print_exc()

    return out

报错信息:

ImportError: cannot import name 'SpacyDocReader' from 'pke.readers'

我尝试将pke降级到1.8.1版本,又出现新的错误:

---> 29 get_alpha_2 = lambda l: LANGUAGE_CODE_BY_NAME[l]
     30 
     31 lang_stopwords = {get_alpha_2(l): l for l in stopwords._fileids}

KeyError: 'hinglish'

我从未使用过pke库,不知道该如何解决,恳请大家帮忙!


解决方案

1. 解决ImportError: cannot import name 'SpacyDocReader'

这个错误源于pke新版本模块结构变更或缺少依赖,按以下步骤处理:

  • 安装spacy库及英文模型:
    pip install spacy
    python -m spacy download en_core_web_sm
    
  • 安装pke稳定版本(推荐1.8.5,修复了多兼容性问题):
    pip install pke==1.8.5
    

2. 解决降级到1.8.1后的KeyError: 'hinglish'

该错误是因为nltk停用词库新增了'hinglish'语言,但pke 1.8.1的LANGUAGE_CODE_BY_NAME字典无对应映射,可选两种解决方式:

方式一:升级到pke 1.8.5版本

如上述步骤,1.8.5版本已修复该语言映射问题,无需额外修改。

方式二:手动修改pke配置文件(针对1.8.1版本)

找到pke安装目录下的base.py(通常路径为Lib\site-packages\pke\base.py),在LANGUAGE_CODE_BY_NAME字典中添加'hinglish'的映射:

LANGUAGE_CODE_BY_NAME = {
    # 保留原有内容
    'hinglish': 'hi'
}

验证

完成上述操作后,重新运行代码即可正常执行MultipartiteRank关键词提取。

内容的提问来源于stack exchange,提问作者crazycoder1602

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:20:19