1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
public Vector msim(){ /*creation du tableau de similarité linguistique*/
Vector <Msim>v=new Vector<Msim>();
double res=0;
for(int i=0;i<v1.size();i++)
{
for(int j=0;j<v2.size();j++){
entity e1=(entity)v1.elementAt(i);
entity e2=(entity)v2.elementAt(j);
if(e1.getType().equals(e2.getType())||(e1.getType().equalsIgnoreCase("Property"))&&e2.getType().equalsIgnoreCase("Property")){
Msim m=new Msim();
m.setNode1(e1.getName());m.setNode2(e2.getName());
double tab[]=make_tab(e1,e2);
res=(tab[0]*jaroo(e1.getName(),e2.getName()))+(tab[1]*Monge(e1.getComment(),e2.getComment()))+(tab[2]*jaroo(e1.getLabel(),e2.getLabel()));
//System.out.println(e1.getName()+"--"+e2.getName()+"--"+res+"--");
m.setMsim(res);
v.add(m);
}}}
return v;
}
public double[] make_tab(entity e1,entity e2){/*faire le tableau des poids*/
double tab[]={0,0,0};
if(e1.getComment().length()==0&&e1.getLabel().length()==0)
tab[0]=1;
else if(e1.getComment().length()!=0&&e1.getLabel().length()==0&& e2.getComment().length()!=0){
tab[0]=0.85;tab[1]=0.15;}
else if(e1.getComment().length()==0&&e1.getLabel().length()!=0&&e2.getLabel().length()!=0){
tab[0]=0.85;tab[2]=0.15;}
else {tab[0]=0.8;tab[1]=0.1;tab[2]=0.1;}
return tab;
}
public void Sim_struct(Vector t){/*faire la similarité structurelle*/
int i=0,j=0; /*prend en parametre vecteur de similarité linguistique*/
double m=0;
Vector v1=onto1.getNodes();
Vector v2=onto2.getNodes();
for(i=v1.size()-1;i>=0;i--){ /*eleminer les noeud comment et label de l'ontologie 1*/
NODE n1=(NODE) v1.elementAt(i);
if(n1.getType().equals("comment")||n1.getType().equals("label"))
v1.remove(i);
}
for(j=v2.size()-1;j>=0;j--){ /*eleminer les noeud comment et label de l'ontologie 2*/
NODE n2=(NODE) v2.elementAt(j);
if(n2.getType().equals("comment")||n2.getType().equals("label"))
v2.remove(j);
}
for (i=0;i<v1.size();i++){
for(j=0;j<v2.size();j++){
NODE na=(NODE)v1.elementAt(i);
NODE nb=(NODE)v2.elementAt(j);
Vector va=onto1.getRelatednode(na);
Vector vb=onto2.getRelatednode(nb);
if(va!=null&&vb!=null){
m=getsim(va,vb,t);
set_sim(na.getName(),nb.getName(),t,m);
}
else set_sim(na.getName(),nb.getName(),t,-1);
}
}} |
Partager