Mentions légales du service

Skip to content
Snippets Groups Projects
Commit ccf54034 authored by Jérôme Pierson's avatar Jérôme Pierson
Browse files

*** empty log message ***

parent 43ed054c
No related branches found
No related tags found
No related merge requests found
......@@ -89,5 +89,241 @@ if (index!=null){
return Dists1s2;
}
/**
* Compute a distance between 2 strings using WordNet synonym
* Get all the synonym for s1 , syno1
* Get all the synonym for s2, syno2
* compute intersection syno1(inter)syno2, I
* compute union syno1(union)syno2, U
* The distance = card I /card U
*
* @param s1
* @param s2
* @return Distance between s1 & s2
*/
public double SynonymDistance (String s1,String s2){
double result=0.000000;
int cardI=0,cardU=0;
int i=0,j=0,k=0;
String Syno1[];
String Syno2[];
String I[]=null;
String U[]=null;
int nbmot1;
int nbmot2;
/** Build the list of synonym for s1 & s2 **/
nbmot1=CountMaxSens(s1);
nbmot2=CountMaxSens(s2);
Syno1=new String[nbmot1];
Syno2=new String[nbmot2];
Syno1=GetAllSyno(s1);
Syno2=GetAllSyno(s2);
/** Compute intersection between the list of synonym : I**/
I=Inter (Syno1,Syno2);
/** Compute union between the list of synonym U **/
U=Union (Syno1,Syno2);
/** compute card I / card U **/
for (i=0;i<I.length;i++){if (I[i]!=null) {cardI++;}}
for (i=0;i<U.length;i++){if (U[i]!=null) {cardU++;}}
if(cardU!=0){result=(double)cardI /(double) cardU;}
return (result);
}
/**
*
* @param S
* @return Number of sens for the word s
*/
private int CountMaxSens (String S){
IndexWord index=null;
Synset S1[]=null;
int i=0;
int sens1=0;
int nbmot1=0;
try { index = Dictionary.getInstance().lookupIndexWord(POS.NOUN,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {S1=index.getSenses();
sens1= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for(i=0;i<sens1;i++){nbmot1=nbmot1+S1[i].getWordsSize();}
try { index = Dictionary.getInstance().lookupIndexWord(POS.VERB,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {S1=index.getSenses();
sens1= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for(i=0;i<sens1;i++){nbmot1=nbmot1+S1[i].getWordsSize();}
try { index = Dictionary.getInstance().lookupIndexWord(POS.ADJECTIVE,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {S1=index.getSenses();
sens1= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for(i=0;i<sens1;i++){nbmot1=nbmot1+S1[i].getWordsSize();}
try { index = Dictionary.getInstance().lookupIndexWord(POS.ADVERB,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {S1=index.getSenses();
sens1= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for(i=0;i<sens1;i++){nbmot1=nbmot1+S1[i].getWordsSize();}
return (nbmot1);
}
/**
*
* @param S
* @return The tab with all the synonym of the word s
*/
private String[] GetAllSyno(String S){
String Syno[]=null;
IndexWord index=null;
Synset[] Synso=null;
int sens=0;
int nbmot=0;
int i=0,j=0,k=0,l=0;
boolean trouve=false;
int strcomp=0;
nbmot=CountMaxSens(S);
Syno=new String[nbmot];
try { index = Dictionary.getInstance().lookupIndexWord(POS.NOUN,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {Synso=index.getSenses();
sens= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for (i=0;i<sens;i++){
for(j=0;j<Synso[i].getWordsSize();j++){
for(l=0;l<k;l++){
if (Synso[i].getWord(j).getLemma().compareTo(Syno[l])==0){trouve=true;}
}
if (trouve!=true){Syno[k++] = Synso[i].getWord(j).getLemma();}
trouve=false;
}
}
try { index = Dictionary.getInstance().lookupIndexWord(POS.VERB,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {Synso=index.getSenses();
sens= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for (i=0;i<sens;i++){
for(j=0;j<Synso[i].getWordsSize();j++){
for(l=0;l<k;l++){
if (Synso[i].getWord(j).getLemma().compareTo(Syno[l])==0){trouve=true;}
}
if (trouve!=true){
Syno[k++] = Synso[i].getWord(j).getLemma();}
trouve=false;
}
}
try { index = Dictionary.getInstance().lookupIndexWord(POS.ADJECTIVE,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {Synso=index.getSenses();
sens= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for (i=0;i<sens;i++){
for(j=0;j<Synso[i].getWordsSize();j++){
for(l=0;l<k;l++){
if (Synso[i].getWord(j).getLemma().compareTo(Syno[l])==0){trouve=true;}
}
if (trouve!=true){
Syno[k++] = Synso[i].getWord(j).getLemma();}
trouve=false;
}
}
try { index = Dictionary.getInstance().lookupIndexWord(POS.ADVERB,S);}
catch(Exception ex){ex.printStackTrace();
System.exit(-1);}
if (index!=null){
try {Synso=index.getSenses();
sens= index.getSenseCount();}
catch (JWNLException e) {e.printStackTrace();}
}
for (i=0;i<sens;i++){
for(j=0;j<Synso[i].getWordsSize();j++){
for(l=0;l<k;l++){
if (Synso[i].getWord(j).getLemma().compareTo(Syno[l])==0){trouve=true;}
}
if (trouve!=true){
Syno[k++] = Synso[i].getWord(j).getLemma();}
trouve=false;
}
}
return(Syno);
}
private String[] Inter(String[] S1, String[] S2){
String result[]=null;
int i=0,j=0,k=0,l=0;
boolean trouve=false;
i=S1.length;
j=S2.length;
if(i<j){result = new String[j];}
else result=new String[i];
for (i=0;i<S1.length;i++){
for(j=0;j<S2.length;j++){
if(S1[i]!=null && S2[j]!=null){
if (S1[i].compareTo(S2[j])==0){trouve=true;}
}
}
if (trouve==true){result[k++]=S1[i];}
trouve=false;
}
return(result);
}
private String[] Union(String[] S1,String[] S2){
String result[]=null;
int i=0,j=0,k=0,l=0;
boolean trouve=false;
i=S1.length;
j=S2.length;
result = new String[i+j];
for (i=0;i<S1.length;i++){result[k++]=S1[i];}
for(j=0;j<S2.length;j++){
for(l=0;l<S1.length;l++){
if(S1[l]!=null && S2[j]!=null){
if (S2[j].compareTo(S1[l])==0){trouve=true;}
}
}
if(trouve==false){result[k++]=S2[j];}
trouve=false;
}
return(result);
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment