package processing.hashtag.baseline;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import common.DoubleMapComparator;
import common.DoubleMapComparatorGeneric;
public class HashtagUtil {
/**
* Convert User-tag-timestamps Map to tag-user-count Map.
*
* @param userTagTimestamps
* @return
*/
public static HashMap<Integer, HashMap<String, Integer>> getTagUserCount(
HashMap<String, HashMap<Integer, ArrayList<Long>>> userTagTimestamps) {
HashMap<Integer, HashMap<String, Integer>> tagUserCount = new HashMap<Integer, HashMap<String, Integer>>();
for (String user : userTagTimestamps.keySet()) {
if (userTagTimestamps.get(user) != null) {
for (Integer tag : userTagTimestamps.get(user).keySet()) {
if (userTagTimestamps.get(user).get(tag) != null) {
if (!tagUserCount.containsKey(tag)) {
tagUserCount.put(tag, new HashMap<String, Integer>());
}
tagUserCount.get(tag).put(user, userTagTimestamps.get(user).get(tag).size());
}
}
}
}
return tagUserCount;
}
/**
* Get All user TFIDF score.
* @return {@link HashMap} of the user and
*/
public static HashMap<String, Vector> createAllUserTFIDFVector(
HashMap<String, HashMap<Integer, ArrayList<Long>>> userTagTimestamps,
HashMap<Integer, HashMap<String, Integer>> tagUserCount) {
System.out.print("All user TFIDF calculation starts >> ");
HashMap<String, Vector> allUserTFIDFVectorMap = new HashMap<String, Vector>();
for (String userName : userTagTimestamps.keySet()) {
System.out.println("TFIDF calculation going for user >> " + userName);
Vector hashtagTFIDFVector = UserTFIDFVectorCalculator.createUserTFIDFVector(userTagTimestamps, tagUserCount,
userName);
System.out.println("TFDIDF vector for the user as >> " + hashtagTFIDFVector.getVector());
allUserTFIDFVectorMap.put(userName, hashtagTFIDFVector);
}
System.out.println("All user TFIDF calculation ends >> ");
return allUserTFIDFVectorMap;
}
public static Map<Integer, Double> getSortedMap( Map<Integer, Double> resultMap) {
Map<Integer, Double> sortedResultMap = new TreeMap<Integer, Double>(new DoubleMapComparator(resultMap));
sortedResultMap.putAll(resultMap);
return sortedResultMap;
}
public static Map<String, Double> getSortedMapString( Map<String, Double> resultMap) {
Map<String, Double> sortedResultMap = new TreeMap<String, Double>(new DoubleMapComparatorGeneric<String>(resultMap));
sortedResultMap.putAll(resultMap);
return sortedResultMap;
}
}