Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 7a24ae61 authored by Jérôme Euzenat's avatar Jérôme Euzenat
Browse files

- (nearly) fully implemented relaxed precision and recall

parent 3cf30085
No related branches found
No related tags found
No related merge requests found
......@@ -39,15 +39,14 @@ The development of 4 versions continue.
<p><ul compact="1">
<li>Implement full OWL rendering of EDOAL (impl)</li>
<li>Adding type checking to EDOAL parser (parser)</li>
<li>Implement fully relaxed precision and recall (impl)</li>
<li>Implement database store for EDOAL (server)</li>
<li>Integrate some basic reasoning.</li>
<li>Complete tutorial4 with distributed reasoning.</li>
<li>Genericize evaluators in <tt>GraphEvaluator</tt> and <tt>GenPlot</tt> (eval)</li>
<li>Implementation of a provenance metadata tag (server/impl)</li>
<li>Providing a <tt>DiffAlign( al1, al2 )</tt> evaluator (impl) and interface (util)</li>
<li>Replace <tt>DistanceAlignment</tt> with a version more in line
with OntoSim (impl)</tt>
<!--li>Implemented transformations in EDOAL (edoal)</li-->
<li>Improve HTML interface layout and usability (server)</li>
<li>Implement metadata edition (server)</li>
<li>Implement correspondence selection (server)</li>
......@@ -62,20 +61,25 @@ The development of 4 versions continue.
<h2>Current SVN trunk version</h2>
<!--h2>Version 4.2 (1xxx): xx/09/2009 - Zimt</h2-->
<!--h2>Version 4.1 (1xxx): xx/09/2009 - Tring</h2-->
<!--h2>Version 4.1 (15xx): xx/08/2010 - Tring</h2-->
<p><ul compact="1">
<li>Integration of skoslite (home made SKOS API) (ontowrap)</li>
<li>Integration of SKOS API (ontowrap)</li>
<li>Extended ontowrap so that all methods can raise exceptions (ontowrap)</li>
<li>Implement fully relaxed precision and recall (impl)</li>
<li>Added a <tt>getResult()</tt> method to <tt>Evaluator</tt> (api)</li>
<li>Added a <tt>DiffAlign( al1, al2 )</tt> evaluator (impl) and interface (server)</li>
<li>Implemented online evaluation (server)</li>
<!--li>Implemented transformations in EDOAL (edoal)</li-->
<li>Added the possibility to drop a number of correspondences in <tt>ONetworkWeakener</tt> (util)</li>
<li>Added a google chart api display of plots <tt>GenPlot -t html</tt> (util)</li>
<li><tt>edoal:or</tt>, <tt>edoal:and</tt> and <tt>edoal:compose</tt>
can be empty (edoal)</li>
<li>Upgraded to <span style="color: green">Pellet 2.1</span> (lib)</li>
<li>Added <a href="tutorial/tutorial4/index.html">tutorial 4</a> Pellet action (tutorial)</li>
<li>Added <a href="tutorial/tutorial5/index.html">tutorial 5</a> about exposing matchers as web services (tutorial)</li>
<li>Fixed path errors in tutorials (tutorial)</li>
<li>Corrected an error in matching when a alignment existed without method extension (server)</li>
<li>Improved RDF Rendering layout (impl)</li>
</ul></p>
......
This diff is collapsed.
......@@ -67,7 +67,7 @@ import gnu.getopt.Getopt;
where the options are:
<pre>
-o filename --output=filename
-f format = seo (symetric/effort-based/oriented) --format=seo
-f format = sepr (symetric/effort-based/precision-oriented/recall-oriented) --format=sepr
-d debug --debug=level
-r filename --reference=filename
-s algo/measure
......@@ -287,7 +287,10 @@ public class ExtGroupEval {
// variables for computing iterative harmonic means
int expected = 0; // expected so far
int foundVect[]; // found so far
double correctVect[]; // correct so far
double symVect[]; // symmetric similarity
double effVect[]; // effort-based similarity
double precOrVect[]; // precision-oriented similarity
double recOrVect[]; // recall-oriented similarity
PrintStream writer = null;
fsize = format.length();
......@@ -305,34 +308,42 @@ public class ExtGroupEval {
writer.println("<colgroup align='center' />");
// for each algo <td spancol='2'>name</td>
for ( String m : listAlgo ) {
writer.println("<colgroup align='center' span='"+fsize+"' />");
writer.println("<colgroup align='center' span='"+2*fsize+"' />");
}
// For each file do a
writer.println("<thead valign='top'><tr><th>algo</th>");
// for each algo <td spancol='2'>name</td>
for ( String m : listAlgo ) {
writer.println("<th colspan='"+(fsize+1)+"'>"+m+"</th>");
writer.println("<th colspan='"+((2*fsize)+1)+"'>"+m+"</th>");
}
writer.println("</tr></thead><tbody><tr><td>test</td>");
// for each algo <td>Prec.</td><td>Rec.</td>
for ( String m : listAlgo ) {
for ( int i = 0; i < fsize; i++){
if ( format.charAt(i) == 's' ) {
writer.println("<td colspan='2'>Symmetric</td>");
writer.println("<td colspan='2'><center>Symmetric</center></td>");
} else if ( format.charAt(i) == 'e' ) {
writer.println("<td colspan='2'>Effort</td>");
} else if ( format.charAt(i) == 'o' ) {
writer.println("<td colspan='2'>Oriente</td>");
writer.println("<td colspan='2'><center>Effort</center></td>");
} else if ( format.charAt(i) == 'p' ) {
writer.println("<td colspan='2'><center>Prec. orient.</center></td>");
} else if ( format.charAt(i) == 'r' ) {
writer.println("<td colspan='2'><center>Rec. orient.</center></td>");
}
}
//writer.println("<td>Prec.</td><td>Rec.</td>");
}
writer.println("</tr></tbody><tbody>");
foundVect = new int[ listAlgo.size() ];
correctVect = new double[ listAlgo.size() ];
symVect = new double[ listAlgo.size() ];
effVect = new double[ listAlgo.size() ];
precOrVect = new double[ listAlgo.size() ];
recOrVect = new double[ listAlgo.size() ];
for( int k = listAlgo.size()-1; k >= 0; k-- ) {
foundVect[k] = 0;
correctVect[k] = 0.;
symVect[k] = 0.;
effVect[k] = 0.;
precOrVect[k] = 0.;
recOrVect[k] = 0.;
}
// </tr>
// For each directory <tr>
......@@ -359,7 +370,6 @@ public class ExtGroupEval {
nexpected = eval.getExpected();
expected += nexpected;
}
// JE: Until the end of "//" for NEWSET
// If foundVect is -1 then results are invalid
if ( foundVect[k] != -1 ) foundVect[k] += eval.getFound();
for ( int i = 0 ; i < fsize; i++){
......@@ -368,26 +378,27 @@ public class ExtGroupEval {
formatter.format("%1.2f", eval.getSymPrecision());
System.out.print("</td><td>");
formatter.format("%1.2f", eval.getSymRecall());
// JE: Until the end of "//" for NEWSET
correctVect[k] += eval.getFound() * eval.getSymPrecision();
symVect[k] += eval.getSymSimilarity();
} else if ( format.charAt(i) == 'e' ) {
formatter.format("%1.2f", eval.getEffPrecision());
System.out.print("</td><td>");
formatter.format("%1.2f", eval.getEffRecall());
// JE: Until the end of "//" for NEWSET
correctVect[k] += eval.getFound() * eval.getEffPrecision();
} else if ( format.charAt(i) == 'o' ) {
formatter.format("%1.2f", eval.getOrientPrecision());
effVect[k] += eval.getEffSimilarity();
} else if ( format.charAt(i) == 'p' ) {
formatter.format("%1.2f", eval.getPrecisionOrientedPrecision());
System.out.print("</td><td>");
formatter.format("%1.2f", eval.getOrientRecall());
// JE: Until the end of "//" for NEWSET
correctVect[k] += eval.getFound() * eval.getOrientPrecision();
formatter.format("%1.2f", eval.getPrecisionOrientedRecall());
precOrVect[k] += eval.getPrecisionOrientedSimilarity();
} else if ( format.charAt(i) == 'r' ) {
formatter.format("%1.2f", eval.getRecallOrientedPrecision());
System.out.print("</td><td>");
formatter.format("%1.2f", eval.getRecallOrientedRecall());
recOrVect[k] += eval.getRecallOrientedSimilarity();
}
writer.println("</td>");
}
} else {
writer.println("<td>n/a</td><td>n/a</td>");
//foundVect[k] = -1;
}
}
writer.println("</tr>");
......@@ -396,14 +407,27 @@ public class ExtGroupEval {
int k = 0;
for ( String m : listAlgo ) {
if ( foundVect[k] != -1 ){
double precision = correctVect[k]/foundVect[k];
double recall = correctVect[k]/expected;
//for ( int i = 0 ; i < fsize; i++){
for ( int i = 0 ; i < fsize; i++){
writer.print("<td>");
formatter.format("%1.2f", precision);
System.out.print("</td><td>");
formatter.format("%1.2f", recall);
if ( format.charAt(i) == 's' ) {
formatter.format("%1.2f", symVect[k]/foundVect[k]);
System.out.print("</td><td>");
formatter.format("%1.2f", symVect[k]/expected);
} else if ( format.charAt(i) == 'e' ) {
formatter.format("%1.2f", effVect[k]/foundVect[k]);
System.out.print("</td><td>");
formatter.format("%1.2f", effVect[k]/expected);
} else if ( format.charAt(i) == 'p' ) {
formatter.format("%1.2f", precOrVect[k]/foundVect[k]);
System.out.print("</td><td>");
formatter.format("%1.2f", precOrVect[k]/expected);
} else if ( format.charAt(i) == 'r' ) {
formatter.format("%1.2f", recOrVect[k]/foundVect[k]);
System.out.print("</td><td>");
formatter.format("%1.2f", recOrVect[k]/expected);
}
writer.println("</td>");
}
} else {
writer.println("<td colspan='2'><center>Error</center></td>");
}
......@@ -422,7 +446,7 @@ public class ExtGroupEval {
public void usage() {
System.out.println("usage: ExtGroupEval [options]");
System.out.println("options are:");
System.out.println("\t--format=seo -r seo\tSpecifies the extended measure used (symetric/effort-based/oriented)");
System.out.println("\t--format=sepr -r sepr\tSpecifies the extended measures used (symetric/effort-based/precision-oriented/recall-oriented)");
System.out.println("\t--reference=filename -r filename\tSpecifies the name of the reference alignment file (default: refalign.rdf)");
System.out.println("\t--dominant=algo -s algo\tSpecifies if dominant columns are algorithms or measure");
System.out.println("\t--type=html|xml|tex|ascii -t html|xml|tex|ascii\tSpecifies the output format");
......
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