souma
-
Modifié par Whismeril le 10/06/2015 à 07:49
Bonjour,
SVP svp svp aidez moi de trouver tt les hypernymes d'un mot (même pour un seul sens) en utilisant wordnet.
j'aime bien que le programme contient un void main exécutable (code en java bien sûr)
j'ai cherché trop d'afficher tt les hypernymes d'un mot mais pas de résultat.le suis mal à l'aise
j'ai créer ce code mais il donne seulement le premier hypernym de chaque sens mais j'ai besoin de la liste de tt les hypernymes successives pour chaque sens
import edu.mit.jwi.IDictionary;
import edu.smu.tspell.wordnet.NounSynset;
import edu.smu.tspell.wordnet.Synset;
import edu.smu.tspell.wordnet.SynsetType;
import edu.smu.tspell.wordnet.WordNetDatabase;
import java.net.MalformedURLException;
import java.net.URL;
import edu.mit.jwi.Dictionary;
import edu.mit.jwi.IDictionary;
import edu.mit.jwi.item.IIndexWord;
import edu.mit.jwi.item.ISynset;
import edu.mit.jwi.item.ISynsetID;
import edu.mit.jwi.item.IWord;
import edu.mit.jwi.item.IWordID;
import edu.mit.jwi.item.POS;
import edu.mit.jwi.item.Pointer;
import java.util.Iterator;
import java.util.List;
//import rita.wordnet.RiWordnet;
public class hypernym {
public static void hyper(String words)
{String wordhyp="";
String path ="C:\\Program Files\\WordNet\\2.1\\dict";
IDictionary dict = null ;
WordNetDatabase database;
Synset[] synsetsnn=new Synset[50] ;
try {
URL url = null;
url = new URL("file", null, path);
dict = new Dictionary(url);
dict.open();
IIndexWord idxWord = dict . getIndexWord (words, POS. NOUN );
NounSynset nounSynset;
//NounSynset[] hypernyms;
System.setProperty("wordnet.database.dir", "C:\\Program Files\\WordNet\\2.1\\dict");
database = WordNetDatabase.getFileInstance();
Synset[] synsets = database.getSynsets(words);
int nbsyn=0;
int k=0;
for (int j = 0; j < synsets.length; j++) { //iteratre over all senses
if (synsets[j] instanceof NounSynset) {
nbsyn++;synsetsnn[k]=synsets[j];k++;
// System.out.println("syn "+j + " = " + synsets[j]);
}}
// System.out.println(" Les hypernymes du mot sont ");
for (int j = 0; j < nbsyn; j++) { //iteratre over all senses
IWordID wordID = idxWord . getWordIDs ().get (j) ; // 1st meaning
IWord word = dict . getWord ( wordID );
ISynset synset = word . getSynset ();
// String lemma=word.getLemma();
// System.out.println(" Lemma = "+ lemma);
List < ISynsetID > hypernyms = synset . getRelatedSynsets ( Pointer . HYPERNYM );
List <IWord > words2 ;
for( ISynsetID sid : hypernyms ){
words2 = dict . getSynset (sid). getWords ();
System .out . print (sid + " {");
for( Iterator <IWord > i = words2 . iterator (); i. hasNext () ;){
// System .out . print (i. next (). getLemma ());
wordhyp=i. next (). getLemma ();
//System .out . println ("mot = "+ wordhyp);
System .out . print (wordhyp);
//hyper(wordhyp);
if(i. hasNext ())
System .out . print (", ");
}
System .out . println ("}");
}
}
}catch (Exception e) {
e.printStackTrace();
}
}public static void main(String[] args) throws MalformedURLException
{ hyper("fly"); }
}