你如何得到动词的过去时态?

获得动词过去时的最有效方法是什么,最好不使用内存繁重的NLP框架?

例如

  • 住到:住
  • 试着:试过
  • 点击:点击
  • 煮沸:煮沸
  • 卖给:卖

我自己写了一些东西(堆栈溢出不会让我自己回答)这似乎适用于常规动词(例如该列表的前4个),但不是不规则动词: http : //pastebin.com/Txh76Dnb

编辑:感谢所有的回复,看起来由于不规则的动词,没有字典就无法正常完成。

虽然我想在不使用字典的情况下以算法方式执行此操作,但我不得不求助于使用字典。

我发现最有效的库是SimpleNLG 。

由于他们的文档与当前的API不同步,以下是如何实现此目的:

XMLLexicon lexicon = new XMLLexicon("path\\to\\default-lexicon.xml"); WordElement word = lexicon.getWord("live", LexicalCategory.VERB); InflectedWordElement infl = new InflectedWordElement(word); infl.setFeature(Feature.TENSE, Tense.PAST); Realiser realiser = new Realiser(lexicon); String past = realiser.realise(infl).getRealisation(); System.out.println(past); 

一种方法可能是创建一个只是不规则动词的词典(那些不遵循通常模式的词典),然后在那里首先查找单词。 如果未出现该单词,请使用您的算法。 有谁知道英语中常规动词与不规则动词的相对数量?

使用字典Web服务。

DictService是一个相当受欢迎的。

它从http://www.dict.org获取结果。 它提供各种数据库。 有一个我发现有用的“英国合作国际词典v.0.48”,它返回单词定义,也是它的时态。

你必须以某种方式解析结果才能找到过去时态。