Java API用于复数forms的英语单词
是否有任何Java API可以提供复数forms的英语单词(例如cactus
for cactus
)?
Wolfram | Alpha返回给定单词的变形forms列表。
以此为例:
http://www.wolframalpha.com/input/?i=word+cactus+inflected+forms
这是他们的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仙人掌’)。 如果你愿意,可以轻松添加。 源代码易于阅读/更新。