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

Spacy多语言模型xx_ent_wiki_sm无法返回pos标签问题求助

问题根因

你使用的xx_ent_wiki_sm是spaCy官方推出的轻量多语言命名实体识别专属模型,本身未集成词性标注(POS Tagger)相关组件,因此调用token.pos_时会返回空值,和代码逻辑无关。

解决方案

  • 方案一:直接替换为支持词性标注的多语言模型
    如果核心需求是多语言词性标注,可直接替换加载spaCy提供的xx_sent_ud_sm模型,该模型内置词性标注、依存句法分析能力,修改后代码如下:
import spacy
nlp = spacy.load('xx_sent_ud_sm')
doc = nlp(u'Por David García')
print(' '.join('{word}/{tag}'.format(word=t.orth_, tag=t.pos_) for t in doc))

运行后可正常输出词性标签,示例输出为:Por/ADP David/PROPN García/PROPN。

  • 方案二:保留实体识别能力的同时新增词性标注管道
    如果需要同时使用xx_ent_wiki_sm的命名实体识别能力和词性标注功能,可将xx_sent_ud_sm的词性标注相关组件添加到现有模型管道中,实现两类功能共用,代码示例如下:
import spacy
# 分别加载实体识别模型和词性标注模型
nlp_ent = spacy.load('xx_ent_wiki_sm')
nlp_pos = spacy.load('xx_sent_ud_sm')
# 向实体识别模型管道中添加词性标注依赖组件
nlp_ent.add_pipe("morphologizer", source=nlp_pos)
nlp_ent.add_pipe("tagger", source=nlp_pos)

doc = nlp_ent(u'Por David García')
# 同时支持输出词性标签和实体信息
print('词性标注结果:', ' '.join('{word}/{tag}'.format(word=t.orth_, tag=t.pos_) for t in doc))
print('实体识别结果:', [(ent.text, ent.label_) for ent in doc.ents])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:39:03