英単語の複数形 (例えばcacti
for cactus
) を提供する Java API はありますか?
7 に答える
Damian Conway の論文「 An Algorithmic Approach to English Pluralization 」に基づく英語の複数形化アルゴリズムを実装するEvo Inflectorを確認してください。ライブラリは Wiktionary のデータに対してテストされ、最もよく使用される 1000 の英単語で 100% の成功率、Wiktionary にリストされているすべての単語で 70% の成功率を報告しています。
さらに精度が必要な場合は、ウィクショナリーのダンプを取得して解析し、単数形から複数形へのマッピングのデータベースを作成できます。ウィクショナリーのオープンな性質により、一部のデータが正しくない可能性があることを考慮してください。
使用例:
English.plural("Facility", 1)); // == "Facility"
English.plural("Facility", 2)); // == "Facilities"
Ruby on Railsには単純なpluralize()関数があることを知っています.JRubyを介してそれを取得できるかもしれません. 問題は本当に簡単ではありません。複数形のルールのページを見ましたが、完全ではありませんでした。一部のルールはアルゴリズム的ではありません。それらは、簡単に取得できない語幹の起源などに依存します。ですから、自分がどれだけ完璧になりたいかを決める必要があります。
Java を考えると、パッケージorg.modeshape.common.textのメンバーとしてmodeshapes Inflector -Class を見てください。または、「インフレクター」と「ランドール ハウチ」をググってください。
この種の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 サボテン」と言うでしょう)。必要に応じて簡単に追加できます。ソースコードは読みやすく更新しやすいです。
Wolfram|Alphaは、与えられた単語の語形変化のリストを返します。
例としてこれを見てください:
http://www.wolframalpha.com/input/?i=word+cactus+inflected+forms
そして、ここに彼らのAPIがあります: