List of usage examples for org.apache.commons.math4.util Pair getValue
public V getValue()
From source file:delfos.rs.contentbased.vsm.booleanvsm.basic.BasicBooleanCBRS.java
@Override protected SparseVector<Long> makeUserProfile(int idUser, DatasetLoader<? extends Rating> datasetLoader, BasicBooleanCBRSModel model) throws CannotLoadRatingsDataset, CannotLoadContentDataset, UserNotFound { final RatingsDataset<? extends Rating> ratingsDataset = datasetLoader.getRatingsDataset(); SparseVector<Long> userProfile = model.getBooleanFeaturesTransformation().newProfile(); Map<Integer, ? extends Rating> userRatingsRated = ratingsDataset.getUserRatingsRated(idUser); //Calculo del perfil for (Map.Entry<Integer, ? extends Rating> entry : userRatingsRated.entrySet()) { int idItem = entry.getKey(); Rating rating = entry.getValue(); SparseVector<Long> itemProfile = model.get(idItem); if (datasetLoader.getDefaultRelevanceCriteria().isRelevant(rating)) { userProfile.add(itemProfile); }//from w w w . java2 s. c om } double norm = userProfile.norm(); for (Pair<Long, Double> vectorEntry : userProfile.fast()) { long key = vectorEntry.getKey(); double value = vectorEntry.getValue(); double normalisedValue = value / norm; userProfile.set(key, normalisedValue); } return userProfile; }
From source file:delfos.rs.contentbased.vsm.booleanvsm.BooleanFeaturesTransformation.java
public List<Double> getDoubleVector(SparseVector<Long> sparseVector) { List<Double> ret = new ArrayList<>(numFeatures); for (int i = 0; i < numFeatures; i++) { ret.add(0.0);// w w w. j av a 2 s .c o m } for (Pair<Long, Double> entry : sparseVector.entrySet()) { ret.set(entry.getKey().intValue(), (double) entry.getValue()); } return ret; }
From source file:delfos.rs.contentbased.vsm.booleanvsm.BooleanFeaturesTransformation.java
/** * Transforma el vector disperso en un mapa con los valores de las caractersticas. * * @param sparseVector Vector de valores dados en el dominio de esta transformacin booleana. * @return//from w w w . j a v a 2 s . c om */ public Map<Feature, Map<Object, Double>> getFeatureValueMap(SparseVector<Long> sparseVector) { Map<Feature, Map<Object, Double>> ret = new TreeMap<>(); for (Pair<Long, Double> entry : sparseVector.entrySet()) { long idFeatureValue = entry.getKey(); double value = entry.getValue(); FeatureValue featureValuePair = getFeatureValue(idFeatureValue); Feature feature = featureValuePair.feature; Object featureValue = featureValuePair.value; if (!ret.containsKey(feature)) { ret.put(feature, new TreeMap<>()); } ret.get(feature).put(featureValue, value); } return ret; }
From source file:delfos.rs.contentbased.vsm.booleanvsm.symeonidis2007.Symeonidis2007FeatureWeighted.java
protected SparseVector<Long> makeFFUserProfile(int idUser, DatasetLoader<? extends Rating> datasetLoader, BooleanFeaturesTransformation booleanFeaturesTransformation) throws CannotLoadRatingsDataset, CannotLoadContentDataset, UserNotFound { RelevanceCriteria relevanceCriteria = datasetLoader.getDefaultRelevanceCriteria(); SparseVector<Long> userProfileValues = booleanFeaturesTransformation.newProfile(); RatingsDataset<? extends Rating> ratingsDataset = datasetLoader.getRatingsDataset(); //Calculo del perfil, FF(u) for (Map.Entry<Integer, ? extends Rating> entry : ratingsDataset.getUserRatingsRated(idUser).entrySet()) { try {// w w w . jav a 2 s . c o m int idItem = entry.getKey(); Rating rating = entry.getValue(); if (relevanceCriteria.isRelevant(rating.getRatingValue())) { SparseVector<Long> itemProfile = makeFFItemProfile(idItem, datasetLoader, booleanFeaturesTransformation); for (Pair<Long, Double> entryItemProfile : itemProfile.fast()) { long idFeature = entryItemProfile.getKey(); double featureValue = entryItemProfile.getValue(); if (featureValue > 0) { if (userProfileValues.containsKey(idFeature)) { userProfileValues.add(idFeature, featureValue); } else { userProfileValues.set(idFeature, featureValue); } } } } } catch (ItemNotFound ex) { ERROR_CODES.ITEM_NOT_FOUND.exit(ex); } } return userProfileValues; }