Как вы получаете прошедшее время глагола?

Каков наиболее эффективный способ получить прошедшее время глагола, желательно без использования каркасов НЛП с большой памятью?

например.

  • жить до: жил
  • попытайтесь: попробовали
  • коснуться: постукивается
  • кипятить до: вареного
  • продать: продано

Я сам что-то написал сам (переполнение стека не позволит мне самому ответить), который, похоже, работает на регулярные глаголы (например, первые 4 из этого списка), но не нерегулярные глаголы: http://pastebin.com/Txh76Dnb

edit: Спасибо за все ответы, похоже, что это невозможно сделать без словаря из-за неправильных глаголов.

3 ответа

Хотя я хотел сделать это алгоритмически без использования словарей, мне пришлось прибегнуть к использованию этого.

Я обнаружил, что наиболее эффективной библиотекой была 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);


Одним из способов сделать может быть создание словаря только неправильных глаголов (те, которые не следуют обычному шаблону), а затем сначала искать слово в этом. Если слово не появляется, используйте свой алгоритм. Кто-нибудь знает относительные числа регулярных или нерегулярных глаголов на английском языке?


Использовать словарь webservice.

DictService является довольно популярным.

Получает результаты http://www.dict.org. который предоставляет различные базы данных. Есть один, который я нашел полезным "Словарь международного сотрудничества по английскому языку v.0.48", который возвращает определения слов, а также время.

Вам нужно будет разобрать результат, чтобы найти прошедшее время.

licensed under cc by-sa 3.0 with attribution.