package happy.research.cf; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class DefaultTrust_t extends Thread_t { protected Map<String, Map<String, Double>> trustMap = null; public DefaultTrust_t(Map<String, Map<String, Double>> trustMap, int id) { super(id); this.trustMap = trustMap; } @SuppressWarnings("unchecked") @Override protected Map<String, Double>[] buildModel(Rating testRating) { String user = testRating.getUserId(); String item = testRating.getItemId(); Map<String, Double> trustScores = new HashMap<>(); Map<String, Double> trustRatings = new HashMap<>(); Map<String, Double> trusteeMap = trustMap.get(user); if (trusteeMap == null) return null; for (Entry<String, Double> en : trusteeMap.entrySet()) { String trustee = en.getKey(); double trust = en.getValue(); Map<String, Rating> bsRatings = userRatingsMap.get(trustee); if (bsRatings == null) continue; double bsRating = 0.0; if (bsRatings.containsKey(item)) bsRating = bsRatings.get(item).getRating(); if (bsRating <= 0.0 || Double.isNaN(bsRating)) continue; if (trust > params.TRUST_THRESHOLD && bsRating > 0.0) { trustScores.put(trustee, trust); trustRatings.put(trustee, bsRating); } } if (trustScores == null || trustScores.size() < 1) return null; return new Map[] { trustScores, trustRatings }; } }