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

能否通过SpaCy根据波兰语动词不定式获取对应变位形式?

用SpaCy实现波兰语动词变位查询

核心结论

SpaCy的波兰语模型(如pl_core_news_sm)主打文本分析标注,本身没有专门的变位生成工具,但可以通过其Morphology模块的inflect()方法,基于语法属性反向生成特定人称的变位形式。你之前尝试的Matcher类只能匹配文本中已存在的变位词,无法生成新形式,所以不适合你的需求。

具体实现步骤

  1. 加载模型并处理不定式动词
    先加载波兰语模型,将不定式转为SpaCy的Token对象,获取其形态信息:
import spacy

# 加载波兰语模型
nlp = spacy.load("pl_core_news_sm")

# 目标不定式动词
infinitive_verb = "mieć"
doc = nlp(infinitive_verb)
verb_token = doc[0]
  1. 生成指定人称的变位形式
    使用verb_token.morph.inflect()方法,传入需要的语法属性参数(人称、数、时态等),即可生成对应变位:
# 生成第一人称单数现在时(mam)
first_person = verb_token.morph.inflect({"Person": "1", "Number": "Sing", "Tense": "Pres"})
print(f"第一人称单数:{first_person}")

# 生成第二人称单数现在时(masz)
second_person = verb_token.morph.inflect({"Person": "2", "Number": "Sing", "Tense": "Pres"})
print(f"第二人称单数:{second_person}")

补充方案(更全面的变位支持)

如果需要覆盖更多时态、人称或不规则动词,建议结合专门的波兰语形态分析库pymorphy2,它对变位的支持更完整:

import pymorphy2

morph = pymorphy2.MorphAnalyzer(lang='pl')
parsed_verb = morph.parse("mieć")[0]

# 第一人称单数现在时
first_person = parsed_verb.inflect({'1per', 'sing', 'pres'}).word
# 第二人称单数现在时
second_person = parsed_verb.inflect({'2per', 'sing', 'pres'}).word

print(first_person, second_person)  # 输出 mam masz

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:22:58