2012-12-11 25 views
8

Qualcuno sa come posso prendere i sinonimi di una parola usando JWNL (Java Wordnet Library) ordinato dalla frequenza stimata? So che questo può essere fatto in qualche modo, perché l'applicazione di Wordnet può farlo. (Non so se è importante, ma sto usando Wordnet 2.1)Come posso trovare i sinonimi in ordine di frequenza stimato usando JWNL (Wordnet Library)?

Ecco il mio codice di come ottengo sinonimi, qualcuno potrebbe dirmi cosa devo aggiungere ... (modi completamente diversi di fare ma sono anche benvenuti!)

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 dal tuo codice –

risposta

10

Dal nessuno ha risposto, suppongo che ci deve essere più persone chiedendo lo stesso pensare e non conoscere la risposta.

Bene, ho capito che esiste la funzione Synset.getTagCount (String), che restituisce il valore della frequenza stimata di ogni synset relativo alla parola (String). Quindi, tutto ciò che dovevo fare era ordinare l'ArrayList con i sinonimi secondo questo.

Ma è stato provato che i synset sono di default restituiti ordinati, quindi quello che ottengo usando il codice che ho scritto alla domanda è già ordinato dalla frequenza stimata!

Spero che questo possa aiutare qualcuno in futuro :)