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

如何让Stanza词形还原器仅返回lemma而非字典?

提取Stanza西班牙语词形还原结果的方法

你可以直接从Stanza返回的Document对象中遍历提取lemma字段,不需要额外运行多余的处理步骤,具体实现如下:

完整代码示例

import stanza

# 下载模型并初始化pipeline(和你原代码一致)
stanza.download('es', package='ancora', processors='tokenize,mwt,pos,lemma', verbose=False)
stNLP = stanza.Pipeline(processors='tokenize,mwt,pos,lemma', lang='es', use_gpu=True)

# 处理目标文本
doc = stNLP('me hubiera gustado mas “sincronia” con la primaria')

# 提取所有词形还原结果
lemmas = []
for sentence in doc.sentences:
    # 处理多词拆分(比如西班牙语缩合词,如"del"会拆成"de"+"el")
    for mwt in sentence.mwts:
        lemmas.extend([token.lemma for token in mwt.tokens])
    # 处理普通单词,排除已被多词拆分覆盖的token
    for token in sentence.tokens:
        if not token.is_mwt:
            lemmas.append(token.lemma)

# 输出结果
print(lemmas)

简化写法(列表推导式)

如果想要更简洁的代码,可以用嵌套列表推导式实现相同逻辑:

lemmas = [t.lemma for sent in doc.sentences for mwt in sent.mwts for t in mwt.tokens] + \
         [t.lemma for sent in doc.sentences for t in sent.tokens if not t.is_mwt]

说明

  • 上述代码仅从Stanza返回的结果中提取lemma字段,不会触发额外的模型计算,完全符合你"不想让工具做额外工作"的需求。
  • 必须处理mwts(多词token)部分,否则会漏掉西班牙语中缩合词拆分后的词形还原结果,保证提取的完整性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:12:14