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

Ric*_* EB 9 java nlp

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

例如

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

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

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

Ric*_* EB 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);
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,你会使用`getWordFromVariant`,它不依赖于基本形式的单词.但是,值得补充的是,默认的Lexicon不知道大量的单词,因此不会经常工作(在这种情况下确实不行).您可能需要更大的词典:https://code.google.com/p/simplenlg/wiki/AppendixC. (2认同)