1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package de.fu_berlin.ties.filter;
23
24 import java.util.Iterator;
25 import java.util.Set;
26
27 import org.dom4j.Element;
28
29 import de.fu_berlin.ties.eval.FMetrics;
30 import de.fu_berlin.ties.eval.FMetricsView;
31
32 /***
33 * A static class that allows to evaluate the precision, recall, and F1 measure
34 * of an {@linkplain de.fu_berlin.ties.filter.ElementFilter element filter}.
35 * No instances of this class can be created, only the static members
36 * should be used.
37 *
38 * @author Christian Siefkes
39 * @version $Revision: 1.2 $, $Date: 2004/09/01 16:35:45 $, $Author: siefkes $
40 */
41 public final class FilterEvaluator {
42
43 /***
44 * Private constructor prevents creation of instances.
45 */
46 private FilterEvaluator() {
47 super();
48 }
49
50 /***
51 * Evaluates precision, recall, and F1 measure of the last walk performed
52 * by a filtering token woken. Delegates to
53 * {@link #evaluate(EmbeddingElements, Set, Set)}.
54 *
55 * @param embeddingElements the correct set of embedding elements
56 * @param filteringWalker the filtering token walker to evaluate
57 * @return the calculated statistics
58 */
59 public static FMetricsView evaluate(
60 final EmbeddingElements embeddingElements,
61 final FilteringTokenWalker filteringWalker) {
62 return evaluate(embeddingElements,
63 filteringWalker.getAcceptedElements(),
64 filteringWalker.getRejectedElements());
65 }
66
67 /***
68 * Evaluates precision, recall, and F1 measure of an element filter by
69 * comparing the accepted and rejected elements of the filter with the
70 * correct set of <code>embeddingElements</code>.
71 *
72 * @param embeddingElements the correct set of embedding elements
73 * @param acceptedElements the set of elements accepted by the filter
74 * @param rejectedElements the set of elements rejected by the filter
75 * @return the calculated statistics
76 */
77 public static FMetricsView evaluate(
78 final EmbeddingElements embeddingElements,
79 final Set acceptedElements, final Set rejectedElements) {
80 final FMetrics result = new FMetrics();
81 Element currentElement;
82
83
84
85
86
87 final Iterator acceptedIter = acceptedElements.iterator();
88 while (acceptedIter.hasNext()) {
89 currentElement = (Element) acceptedIter.next();
90
91 if (embeddingElements.containsExtraction(currentElement)) {
92
93 result.incTruePos();
94 } else {
95
96 result.incFalsePos();
97
98 }
99 }
100
101
102 final Iterator rejectedIter = rejectedElements.iterator();
103 while (rejectedIter.hasNext()) {
104 currentElement = (Element) rejectedIter.next();
105
106 if (embeddingElements.containsExtraction(currentElement)) {
107
108 result.incFalseNeg();
109
110 }
111
112 }
113
114
115
116
117
118
119
120
121 return result;
122 }
123
124 }