新版本Spacy-PyTextRank使用方法及'textrank'工厂找不到报错解决
解决PyTextRank添加管道时的[E002]工厂找不到问题
修正代码笔误:你的代码中
lp.add_pipe应为nlp.add_pipe,先修正这个基础错误。显式添加TextRank管道:
由于spaCy 3.x的组件注册机制,直接用字符串"textrank"可能无法识别,尝试显式调用PyTextRank的组件类:import pytextrank import spacy nlp = spacy.load('en_core_web_trf') tr = pytextrank.TextRank() nlp.add_pipe(tr.PipelineComponent, name="textrank", last=True)确认版本兼容性:
PyTextRank 3.3.0官方兼容spaCy 3.0~3.6版本,而你使用的spaCy是3.7.3,版本不匹配可能导致注册失败。可采取两种方案:- 降级spaCy到3.6.x:
pip install spacy==3.6.0,同时下载对应版本的模型:python -m spacy download en_core_web_trf-3.6.0 - 升级PyTextRank到最新稳定版:
pip install --upgrade pytextrank,新版本通常会适配更高版本的spaCy
- 降级spaCy到3.6.x:
检查环境包一致性:
在WSL Ubuntu环境下,确保PyTextRank和spaCy安装在同一Python环境中,运行以下命令验证路径是否一致:pip show pytextrank pip show spacy绕过管道直接使用PyTextRank:
如果管道添加始终有问题,可直接用PyTextRank API处理spaCy文档:import pytextrank import spacy nlp = spacy.load('en_core_web_trf') text = "待提取关键词的目标文本" doc = nlp(text) tr = pytextrank.TextRank() doc = tr(doc) # 提取前10个关键词及权重 for phrase in doc._.phrases[:10]: print(f"关键词:{phrase.text},权重:{phrase.rank:.4f}")
内容的提问来源于stack exchange,提问作者Alvaro
相关产品推荐
相关产品推荐

