Java API用于复数形式的英语单词

时间:2011-05-06 05:49:49

标签: java dictionary word pluralize

是否有任何Java API可以提供复数形式的英语单词(例如cacticactus)?

7 个答案:

答案 0 :(得分:42)

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

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

示例用法:

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

答案 1 :(得分:4)

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

Groovy测试:

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

答案 2 :(得分:2)

我知道Ruby on Rails中有简单的pluralize()函数,也许你可以通过JRuby获得它。问题真的不容易,我看到了关于如何复数的规则,甚至还没有完整。有些规则不是算法 - 它们依赖于茎源等,这是不容易获得的。所以你必须决定你想成为多么完美。

答案 3 :(得分:2)

考虑到java,请查看modeshapes Inflector-Class作为包 org.modeshape.common.text 的成员。或谷歌为“inflector”和“randall hauch”。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

以此为例:

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

这是他们的API:

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

答案 6 :(得分:0)

如果您可以利用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仙人掌')。如果你愿意,可以轻松添加。源代码易于阅读/更新。