Spacy 3.1的POS标注器是否依赖parser?词形还原是否需启用parser?
spaCy POS标注与词形还原的组件依赖问题解答
1. 关于动词/助动词标注是否需要同时启用parser和tagger的判断
这个判断基本正确。
spaCy预训练pipeline的标注逻辑为:
tagger组件负责输出细粒度POS标签(如VBZ、NNP等),但你统计用到的粗粒度UPOS标签(VERB、AUX、NOUN等)的生成,需要结合上下文特征做消歧- 动词、助动词的兼类场景极多(如
working可作动词现在分词、形容词、名词),必须依赖parser输出的依存句法信息判断它的句法角色,才能准确区分词性;而名词、形容词的兼类场景少,对句法依存的依赖度低,所以禁用parser后差异不大 - 如果你需要准确率95%以上的动词/助动词统计结果,必须同时保留
tagger和parser组件
2. 词形还原的组件依赖
分不同使用场景确认依赖:
- 所有版本的spaCy默认lemmatizer都强依赖
tagger的输出:同一个词形不同词性的还原结果完全不同,比如left作动词还原为leave,作名词还原为left,没有POS标签输入的话词形还原结果完全不可用 - 对于
parser的依赖:- 如果你能接受小幅准确率损失,且处理的是英文这类形态变化简单的语言,可以禁用
parser完成词形还原,但前提是你能接受动词相关的还原错误率上升10%~15% - 如果你需要最高准确率的词形还原结果,尤其是处理动词、助动词的还原,必须同时启用
parser和tagger,parser输出的句法信息可以辅助tagger做更准确的词性消歧,最终提升还原准确率
- 如果你能接受小幅准确率损失,且处理的是英文这类形态变化简单的语言,可以禁用
性能优化建议
如果要平衡速度和准确率,用nlp.pipe时可以仅禁用你完全用不到的组件,示例如下:
# 不需要实体识别的话只禁用ner即可,速度提升明显且对POS、lemma结果影响极小 for doc in nlp.pipe(your_text_list, disable=["ner"]): # 后续处理逻辑
如果速度还是达不到要求,可以换成更小的预训练模型(比如把en_core_web_lg换成en_core_web_sm),准确率下降幅度不大但速度提升明显。
内容的提问来源于stack exchange,提问作者Shaannoor
相关产品推荐
相关产品推荐

