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

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


person Joe    schedule 06.05.2011    source источник
comment
Для каких естественных языков и для каких языков программирования?   -  person    schedule 06.05.2011
comment
Кроме того, формы множественного числа кактуса - это кактусы (одиночное i) и кактусы согласно Новому Оксфордскому американскому словарю.   -  person    schedule 06.05.2011
comment
Мы смотрим на слова английского языка, и наша среда программирования основана на Java.   -  person Joe    schedule 06.05.2011
comment
Я не уверен, есть ли библиотека для Java. В случае его отсутствия хорошей отправной точкой является модуль Lingua::EN::Inflect Perl, доступный здесь. Надеюсь, кто-то портировал Inflect на Java.   -  person    schedule 06.05.2011


Ответы (7)


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

См. это в качестве примера:

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

А вот их API:

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

person Meng Lu    schedule 09.06.2011
comment
Это не API. есть ли общедоступный API для wolframAlpha? Я бы подумал, что они попытаются избежать этого - person Lyndon White; 12.02.2012

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

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

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

English.plural("Facility", 1)); // == "Facility"
English.plural("Facility", 2)); // == "Facilities"
person Sławek    schedule 10.01.2012
comment
Фантастика, я собирался сам начать собирать алгоритм, основанный на этой статье. Спасибо @Slawek за указание на это. - person Sean Connolly; 19.01.2013
comment
Количество поддерживаемых английских слов кажется ограниченным, судя по источнику на github. - person cosbor11; 11.02.2016
comment
Библиотека не может предоставить форму единственного числа английского слова. - person diguage; 03.03.2018

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

Отличный тест:

NameConverter nameTools = new DefaultNameConverter();
assert nameTools.depluralize("apples") == "apple"
nameTools.pluralize("apple") == "apples"
person jkschneider    schedule 27.12.2013
comment
не рекомендую, это даже не работает для mouse, оно преобразует слово в mouses, что неверно - person idmitriev; 06.09.2018

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

person Gabriel Ščerbák    schedule 25.06.2011
comment
Возможно, если вы собираетесь что-то делать самостоятельно, вы можете найти некоторую информацию здесь: english.stackexchange.com - person Gabriel Ščerbák; 25.06.2011

учитывая java, взгляните на modeshapes Inflector-Class как член пакета org.modeshape. общий.текст. Или погуглите "инфлектор" и "рэндалл хауч".

person Sebastian Schmitt    schedule 10.01.2012
comment
Сравниваю библиотеку с jibx-tools. Библиотека лучше. В некоторых словах, например leaves, jibx-tools лучше. - person diguage; 03.03.2018

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

person Community    schedule 06.05.2011

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

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

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

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

person Ronnie Royston    schedule 05.09.2017