【问题标题】:How to conjugate a verb in NLTK given POS tag?如何在给定 POS 标签的 NLTK 中结合动词?
【发布时间】:2021-04-25 06:57:13
【问题描述】:

给定一个 POS 标签,例如 VBD,我如何结合动词来匹配 NLTK?

例如

VERB: go
POS: VBD
RESULT: went

【问题讨论】:

  • 您是否在谈论 POS 标签,以便确保您使用动词而不是名词或形容词?

标签: python nlp nltk


【解决方案1】:

NLTK 目前不提供共轭。 Pattern-en 和 nodebox 做共轭。

有时,pattern-en 网站中的示例无法正常工作。这对我有用:

>>> from pattern.en import conjugate
>>> verb = "go"
>>> conjugate(verb, 
...     tense = "past",           # INFINITIVE, PRESENT, PAST, FUTURE
...    person = 3,                # 1, 2, 3 or None
...    number = "singular",       # SG, PL
...      mood = "indicative",     # INDICATIVE, IMPERATIVE, CONDITIONAL, SUBJUNCTIVE
...    aspect = "imperfective",   # IMPERFECTIVE, PERFECTIVE, PROGRESSIVE 
...   negated = False)            # True or False
u'went'
>>> 

注意

似乎conjugate 仅在时态不需要助动词时才输出。例如,在西班牙语中,ir 的(单数第一人称)未来是 iré。在英语中,go的将来时由助动词will和不定式go构成,结果是will go .在下面的代码中,iré 是输出,但不是 will go

>>> from pattern.es import conjugate as conjugate_es
>>> verb = "ir"
>>> conjugate_es(verb, tense = "future")
u'ir\xe1'
>>> from pattern.en import conjugate as conjugate_en
>>> verb = "go"
>>> conjugate_en(verb, tense = "future")
>>> 

【讨论】:

  • 这是否意味着 NLTK 不做动词变位?
  • 完全正确 :)(我愿意犯错,但我或我认识的其他任何人都没有找到方法!)
  • @arturomp,我试图用将来时来表示 pattern.en。它对你有用吗,因为它对我没有任何回报。
  • 是的,这很有趣——它似乎与语言有关,以及是否需要助动词来形成时态(如英语中的 will)!另一方面,在西班牙语中,您实际上在不使用助动词的情况下将动词变位为将来时,所以在这种情况下它似乎有效!我已经更新了我的答案以说明这一点,但我真的觉得这应该在文档中
  • @macmania314 您可能还想查看英语和西班牙语的不同测试文件,例如,以获得更多证据:Spanish testEnglish test
【解决方案2】:

我使用 MontyLingua 进行词的变形和变位。 https://pypi.python.org/pypi/MontyLingua/2.1

    mlg = MontyLingua.MontyNLGenerator.MontyNLGenerator()
    mlg.conjugate_verb(verb,mode)

更多信息:https://en.wikipedia.org/wiki/MontyLingua

【讨论】:

  • 刚检查出来的图案,看起来很不错;我会考虑更换我的 MontyLingua 代码!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多