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

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

например

  • жить для: жил
  • попытаться: попытался
  • нажмите, чтобы: постучал
  • отварить
  • продать: продано

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

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

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);

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

Используйте словарь веб-сервиса.

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

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

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

Другие вопросы по тегам