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

时间:2012-03-01 16:55:08

标签: java nlp

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

e.g。

  • 活着:生活
  • 尝试:尝试
  • 点按:点击
  • 煮沸:煮沸
  • 卖给:卖

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

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

3 个答案:

答案 0 :(得分:11)

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

我发现最有效的库是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);

答案 1 :(得分:3)

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

答案 2 :(得分:1)

使用字典网络服务。

DictService是一个相当受欢迎的人。

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

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