Java API用于复数forms的英语单词

是否有任何Java API可以提供复数forms的英语单词(例如cactus for cactus )?

Wolfram | Alpha返回给定单词的变形forms列表。

以此为例:

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

这是他们的API:

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

检查基于Damian Conway论文“ 英语多元化的算法方法 ”实现英语复数算法的Evo Inflector 。 该图书馆根据维基词典的数据进行测试,报告1000个最常用英语单词的成功率为100%,维基词典中列出的所有单词成功率为70%。

如果你想要更准确,你可以采取维基词典转储并解析它来创建单数到多个映射的数据库。 考虑到由于维基词典的开放性,某些数据可能不正确。

用法示例:

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

jibx-tools提供了方便的多元化/ depluralizer。

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为“inflector”和“randall hauch”。

很难找到这种API。 相反,你需要找到一些可以满足你的目的的网络服务。 检查一下 。 我不确定这是否可以帮助你..(我试着把词仙人掌和仙人掌放在响应中的某个地方)。

如果你可以利用javascript,我为此创建了一个轻量级(7.19 KB)的javascript。 或者您可以将我的脚本移植到Java。 非常好用:

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

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

顺便说一句:看起来像仙人掌的仙人掌是一种超级特殊的转换(大多数人都会说’1仙人掌’)。 如果你愿意,可以轻松添加。 源代码易于阅读/更新。