获得动词过去时的最有效方法是什么,最好不使用内存繁重的NLP框架?
e.g。
我自己写了一些东西(堆栈溢出不会让我自己回答)这似乎适用于常规动词(例如该列表的前4个),但不是不规则动词:http://pastebin.com/Txh76Dnb
编辑:感谢所有的回复,看起来由于动词不规则而没有字典就无法正常完成。
答案 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”,它返回单词定义,也是它的时态。
你必须以某种方式解析结果才能找到过去时。