001 /** 002 * NNretrievalMethod.java 003 * jCOLIBRI2 framework. 004 * @author Juan A. Recio-García. 005 * GAIA - Group for Artificial Intelligence Applications 006 * http://gaia.fdi.ucm.es 007 * 03/01/2007 008 */ 009 package jcolibri.method.retrieve.NNretrieval; 010 011 import java.util.ArrayList; 012 import java.util.Collection; 013 import java.util.List; 014 015 import jcolibri.cbrcore.CBRCase; 016 import jcolibri.cbrcore.CBRQuery; 017 import jcolibri.method.retrieve.RetrievalResult; 018 import jcolibri.method.retrieve.NNretrieval.similarity.GlobalSimilarityFunction; 019 import jcolibri.util.ProgressController; 020 021 /** 022 * Performs a Nearest Neighbor numeric scoring comparing attributes. 023 * It uses global similarity functions to compare compound attributes 024 * (CaseComponents) and 025 * local similarity functions to compare simple attributes. 026 * The configuration of this method is stored in the NNConfig object. 027 * @author Juan A. Recio-García 028 * @version 2.0 029 * @see jcolibri.method.retrieve.NNretrieval.NNConfig 030 */ 031 public class NNScoringMethod { 032 033 034 @SuppressWarnings("unchecked") 035 /** 036 * Performs the NN scoring over a collection of cases comparing them with a query. 037 * This method is configured through the NNConfig object. 038 */ 039 public static Collection<RetrievalResult> evaluateSimilarity(Collection<CBRCase> cases, CBRQuery query, NNConfig simConfig) 040 { 041 List<RetrievalResult> res = new ArrayList<RetrievalResult>(); 042 ProgressController.init(NNScoringMethod.class,"Numeric Similarity Computation", cases.size()); 043 GlobalSimilarityFunction gsf = simConfig.getDescriptionSimFunction(); 044 for(CBRCase _case: cases) 045 { 046 res.add(new RetrievalResult(_case, gsf.compute(_case.getDescription(), query.getDescription(), _case, query, simConfig))); 047 ProgressController.step(NNScoringMethod.class); 048 } 049 java.util.Collections.sort(res); 050 ProgressController.finish(NNScoringMethod.class); 051 052 return res; 053 } 054 }