private double getGenreEntropy() {
		int overallDenom = 0;
		for (Map.Entry<String, Integer> kv : titleMap.entrySet()) {
			overallDenom += kv.getValue();
		}

		double entropy = 0.0;
		for (Map.Entry<Integer, List<Point>> kv : clusterMap.entrySet()) {
			Map<String, Integer> clusterTopicCount = new HashMap<String, Integer>();
			for (Point p : kv.getValue()) {
				if (clusterTopicCount.containsKey(p.title)) {
					int count = clusterTopicCount.get(p.title) + 1;
					clusterTopicCount.put(p.title, count);
				} else
					clusterTopicCount.put(p.title, 1);
			}

			int denom = 0;
			for (Map.Entry<String, Integer> ctc : clusterTopicCount.entrySet()) {
				if (ctc.getKey() != null)
					denom += ctc.getValue();
			}

			for (Map.Entry<String, Integer> kv2 : clusterTopicCount.entrySet()) {
				if (denom != 0)
					entropy += -(double) kv2.getValue()
							/ denom
							* (Math.log((double) kv2.getValue() / denom) / Math
									.log(2));
			}
			entropy *= (double) denom / overallDenom;
		}

		// int totalTopics = topicMap.size();
		// double entropy = 0.0;
		// for(Map.Entry<String, Integer> kv : topicMap.entrySet()){
		// entropy += -(double)kv.getValue()/totalTopics *
		// (Math.log((double)kv.getValue()/totalTopics)/Math.log(2));
		// }
		return entropy;
	}