2012-12-11 21 views
8

Czy ktoś wie, jak mogę wziąć synonimy słowa przy użyciu JWNL (Java Wordnet Library) uporządkowanej według szacowanej częstotliwości? Wiem, że można to zrobić w jakiś sposób, ponieważ aplikacja Wordnet może to zrobić. (Nie wiem, czy to ma znaczenie, ale używam Wordnet 2.1)Jak znaleźć synonimy w szacowanej kolejności częstotliwości przy użyciu JWNL (Wordnet Library)?

Oto mój kod, jak mogę uzyskać synonimy, czy ktoś może mi powiedzieć, co powinienem dodać ... (zupełnie inne sposoby robienia to są również mile widziane!)

ArrayList<String> synonyms=new ArrayList<String>(); 
    System.setProperty("wordnet.database.dir", filepath); 
    String wordForm = "make"; 
    Synset[] synsets = database.getSynsets(wordForm,SynsetType.VERB); 
    if (synsets.length > 0) { 
     for (int i = 0; i < synsets.length; i++) { 
    String[] wordForms = synsets[i].getWordForms(); 
    for (int j = 0; j < wordForms.length; j++) { 
      if(!synonyms.contains(wordForms[j])){ 
     synonyms.add(wordForms[j]); } 
       } 
      } 
    } 
+0

GOt Idea ze swojego kodu –

Odpowiedz

10

Ponieważ nikt nie odpowiedział, przypuszczam, że musi być więcej ludzi zastanawiają ten sam myśleć i nie znając odpowiedź.

Cóż, zorientowałem się, że istnieje funkcja Synset.getTagCount (String), która zwraca wartość szacowanej częstotliwości każdego zestawu synoptycznego odnoszącego się do słowa (String). Więc wszystko, co musiałem zrobić, to posortować ArrayList z synonimami zgodnie z tym.

Ale zostało udowodnione, że synsety są domyślnie zwracane posortowane, więc to, co otrzymuję za pomocą kodu, który napisałem na pytanie, jest już uporządkowane według szacowanej częstotliwości!

Mam nadzieję, że to pomoże komuś w przyszłości :)