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

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

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 есть простая функция pluralize (), возможно, вы можете получить это через JRuby. Проблема на самом деле непростая, я видел страницы правил о том, как плюрализовать, и это даже не было полным. Некоторые правила не являются алгоритмическими – они зависят от происхождения стебля и т. Д., Что нелегко получить. Поэтому вы должны решить, насколько вы идеальны.

рассматривая java, посмотрите на modeshapes Inflector-Class как член пакета org.modeshape.common.text . Или google для «инфлектора» и «randall hauch».

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

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

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

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

BTW: Похоже, кактусы кактусы – это супер специальное преобразование (большинство ppl собираются сказать «1 кактус» в любом случае). Легко добавить это, если хотите. Исходный код легко читается / обновляется.

Interesting Posts

Недостатки отсутствия раздела подкачки

Зашифрованные контейнеры сжатия, такие как ZIP и 7-Zip, сжимают или шифруют в первую очередь?

Как настроить обнаружение столкновения SceneKit

Могут ли переопределенные методы различаться по типу возврата?

Можно ли использовать 3,5-миллиметровый разделитель наушников для объединения двух входов в один выход?

В чем разница между созданием экземпляра объекта с использованием нового vs.

Что такое экземпляр Java?

Как я могу постоянно включать номера строк в IntelliJ?

Двухэтапный поиск – требуется объяснение

Как конвертировать HTML в PDF с помощью iTextSharp

Использование ng-if внутри ng-repeat?

Можно ли разместить эти папки в другом месте?

У палки RAM есть несколько плохих блоков. Есть ли способ отключить их или выделить плохие блоки, чтобы другие программы не могли их использовать?

Как проверить, запущен ли экран, затем выполнить команду на экране и отделить ее?

Как я могу проверить, подключены ли streamи ввода / вывода Java-программы к терминалу?

Давайте будем гением компьютера.