public double getPMIScore(String word1, String word2) {
		double score = 0.0D;
		List<Long> word1CommentIds = words2Comments.get(word1);
		List<Long> word2CommentIds = words2Comments.get(word2);
		if (word1CommentIds == null || word2CommentIds == null) {
			return score;
		}
		if (word1CommentIds.size() == 0 || word2CommentIds.size() == 0) {
			return score;
		}
		int word1Freq = word1CommentIds.size();
		int word2Freq = word2CommentIds.size();
		double word1Prob = div(word1Freq, totalWords, 8);
		double word2Prob = div(word2Freq, totalWords, 8);
		Map<Long, Integer> word1Map = list2Map(word1CommentIds);
		Map<Long, Integer> word2Map = list2Map(word2CommentIds);
		int uniFreq = 0;
		for (Map.Entry<Long, Integer> entry : word1Map.entrySet()) {
			long id = entry.getKey();
			if (word2Map.containsKey(id)) {
				uniFreq += Math.min(entry.getValue(), word2Map.get(id));
			}
		}
		
		if (uniFreq == 0) {
			return score;
		}
		double uniProb = div(uniFreq, totalWords, 8);
		return Math.log(div(uniProb, word1Prob*word2Prob, 8));
	}