Java API для множественных форм английских слов

Существуют ли какие-либо Java API(ы), которые будут обеспечивать множественную форму английских слов (например, cacti за cactus)?

7 ответов

Решение

Wolfram|Alpha возвращает список форм перегиба для данного слова.

Посмотрите на это в качестве примера:

http://www.wolframalpha.com/input/?i=word+cactus+inflected+forms

И вот их API:

http://products.wolframalpha.com/api/

Проверьте Evo Inflector, который реализует алгоритм плюрализма английского языка, основанный на статье Дамиана Конвея " Алгоритмический подход к плюрализации английского языка". Библиотека проверена по данным из Викисловаря и сообщает о 100% успешности для 1000 наиболее употребляемых английских слов и 70% успешности для всех слов, перечисленных в Викисловарь.

Если вы хотите еще большей точности, вы можете взять дамп Wiktionary и проанализировать его, чтобы создать базу данных для сопоставлений единственного и множественного числа. Примите во внимание, что из-за открытого характера Викисловаря некоторые данные могут быть неверными.

Пример использования:

English.plural("Facility", 1)); // == "Facility"
English.plural("Facility", 2)); // == "Facilities"

jibx-tools предоставляет удобный мультипликатор / деплурализатор.

Groovy тест:

NameConverter nameTools = new DefaultNameConverter();
assert nameTools.depluralize("apples") == "apple"
nameTools.pluralize("apple") == "apples"

Я знаю, что в Ruby on Rails есть простая функция множественного числа (), возможно, вы могли бы получить это через JRuby. Проблема на самом деле не простая, я видел страницы правил о том, как использовать множественное число, и он даже не был закончен. Некоторые правила не являются алгоритмическими - они зависят от происхождения ствола и т. Д., Что нелегко получить. Таким образом, вы должны решить, насколько вы хотите быть идеальным.

Рассматривая java, взглянем на формы Inflector-Class в качестве члена пакета org.modeshape.common.text. Или Google для "инфлектора" и "Рэндалл Хаух".

Если вы можете использовать JavaScript, я создал для этого облегченный (7,19 КБ) JavaScript. Или вы можете перенести мой скрипт на Java. Очень прост в использовании:

pluralizer.run('goose') --> 'geese'
pluralizer.run('deer') --> 'deer'
pluralizer.run('can') --> 'cans'

https://github.com/rhroyston/pluralizer-js

Кстати: похоже, что кактусы в кактусы - это супер-специальное преобразование (большинство ппл все равно скажут "1 кактус"). Легко добавить это, если вы хотите. Исходный код легко читать / обновлять.

Трудно найти такого рода API. скорее, вам нужно найти какой-нибудь веб-сервис, который может служить вашей цели. Проверьте это. Я не уверен, может ли это помочь вам.. (Я попытался вставить слово кактусы и получил кактус где-то в ответе).

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