7

JavaベースのアプリでWordnetを使用する必要があります。したい:

  • シンセットを検索する

  • シンセット間の類似性/関連性を見つける

私のアプリはRDFグラフを使用しており、WordnetにSPARQLエンドポイントがあることは知っていますが、データセットは大きすぎないので、ローカルコピーを用意する方が良いと思います。

私は次の瓶を見つけました:

私のアプリに何をお勧めしますか?

いくつかのバインディングを介してJavaアプリからPerlライブラリを使用することは可能ですか?

ありがとう!ムローン

4

3 に答える 3

12

使いやすいので、通常のワードネットにはJAWSを使用します。ただし、類似性メトリックについては、ここにあるライブラリを使用します。また、このフォルダを機能させるには、前処理されたWordNetおよびコーパスデータを含むこのフォルダをダウンロードする必要があります。プロジェクトフォルダの「lib」という別のフォルダにそのフォルダを配置したと仮定すると、コードは次のように使用できます。

JWS ws = new JWS("./lib", "3.0");
Resnik res = ws.getResnik();
TreeMap<String, Double> scores1 = res.res(word1, word2, partOfSpeech);
for(Entry<String, Double> e: scores1.entrySet())
    System.out.println(e.getKey() + "\t" + e.getValue());
System.out.println("\nhighest score\t=\t" + res.max(word1, word2, partOfSpeech) + "\n\n\n");

これにより、次のようなものが出力され、比較する単語によって表されるシンセットの可能な組み合わせごとの類似度スコアが示されます。

hobby#n#1,gardening#n#1 2.6043996588901104
hobby#n#2,gardening#n#1 -0.0
hobby#n#3,gardening#n#1 -0.0
highest score   =   2.6043996588901104

どちらか/両方の単語のどちらの意味かを指定できるメソッドもありますres(String word1, int senseNum1, String word2, partOfSpeech)。など。残念ながら、ソースドキュメントはJavaDocではないため、手動で検査する必要があります。ソースはここからダウンロードできます。

使用可能なアルゴリズムは次のとおりです。

JWSRandom(ws.getDictionary(), true, 16.0);//random number for baseline
Resnik res = ws.getResnik();
LeacockAndChodorowlch = ws.getLeacockAndChodorow();
AdaptedLesk adLesk = ws.getAdaptedLesk();
AdaptedLeskTanimoto alt = ws.getAdaptedLeskTanimoto();
AdaptedLeskTanimotoNoHyponyms altnh = ws.getAdaptedLeskTanimotoNoHyponyms();
HirstAndStOnge hso = ws.getHirstAndStOnge();
JiangAndConrath jcn = ws.getJiangAndConrath();
Lin lin = ws.getLin();
WuAndPalmer wup = ws.getWuAndPalmer();

また、MITのJWI用のjarファイルが必要です。

于 2011-06-18T08:05:44.843 に答える
1

JAWSには、同様のwordFormsを検索する機能があります。詳細は次のとおりです。

public AdjectiveSynset [] getSimilar()はWordNetExceptionをスローし、ここにチェックアウトできるリンクがあります:http://lyle.smu.edu/~tspell/jaws/doc/edu/smu/tspell/wordnet/AdjectiveSynset.htmlこの リンク使用できる詳細が含まれます。

于 2012-05-22T11:03:41.187 に答える
0

JAWSとJWNLのどちらがシンセット間の類似性を計算する方法を提供しているかはわかりませんが、シンセットの検索に両方を試したところ、JAWSの方が使いやすいことがわかりました。具体的には、単純です。

    // Specifying the Database Directory
    System.setProperty("wordnet.database.dir", "C:/WordNet/2.1/dict/");

JWNLのfile_properties.xml要件よりも理解しやすかったです。

于 2011-05-26T13:36:55.973 に答える