public double eapp(Venue venue) { // estimated appreciation of a venue given a user's relevance judgments.
		double eapp = 0;
		
		// totalTsim is the sum of the topical similarity between venue and all
		// the rated venues. It is computed to normalize eapp, in which topical
		// similarity is used as weight.
		double totalTsim = 0;
		
		// venueRatings maps each rated venue Id with the rating user has
		// given to this venue (the ratings have been rescaled from -1 to 4
		// into -0.25 to 1.0).
		Map<String, Double> venueRatings = user.getVenueRatings();
		for (String ratedVenueId : venueRatings.keySet()) {
			if (venueRatings.get(ratedVenueId) >= 0) {
				// The user was able to give a relevance judgment on this 
				// venue.
				eapp += venueRatings.get(ratedVenueId)*tsim(venue, ratedVenues.get(ratedVenueId));
				totalTsim += tsim(venue, ratedVenues.get(ratedVenueId));
			}
		}
		
		eapp /= totalTsim;
		
		return eapp;
	}