Python 中动词的 NodeBox 错误

2 投票
1 回答
581 浏览
提问于 2025-04-16 14:52

我下载了这个包 http://nodebox.net/code/index.php/Linguistics#verb_conjugation,但是在尝试获取一个动词的时态时,出现了错误。

import en
print en.is_verb('use')
#prints TRUE

print en.verb.tense('use')

KeyError                                  Traceback (most recent call last)

/home/cse/version2_tense.py in <module>()
----> 1 
      2 
      3 
      4 
      5 

/home/cse/en/__init__.pyc in tense(self, word)
    124 
    125     def tense(self, word):
--> 126         return verb_lib.verb_tense(word)
    127 
    128     def is_tense(self, word, tense, negated=False):

/home/cse/en/verb/__init__.pyc in verb_tense(v)
    175 
    176     infinitive = verb_infinitive(v)
--> 177     a = verb_tenses[infinitive]
    178     for tense in verb_tenses_keys:
    179         if a[verb_tenses_keys[tense]] == v:

KeyError: ''

1 个回答

5

你遇到这个错误的原因是因为在他们用来创建字典的 ~/Library/Application Support/NodeBox/en/verb/verb.txt 文件里有个错误。

这里应该用的是 infinitive 形式,也就是动词的原形,但是“used”被错误地当成了原形。

在第5857行:

used,,,uses,,using,,,,,used,used,,,,,,,,,,,,

应该改成:

use,,,uses,,using,,,,,used,used,,,,,,,,,,,,

编辑并保存文件后:

import en

print en.is_verb("use")
print en.verb.infinitive('use')
print en.verb.tense('use')

会得到:

True
use
infinitive

额外信息:

import en

print 'use    %s' % en.verb.tense("use")
print 'uses   %s' % en.verb.tense("uses")
print 'using  %s' % en.verb.tense('using')
print 'used   %s' % en.verb.tense('used')

use    infinitive
uses   3rd singular present
using  present participle
used   past

撰写回答