String text = Tools.LIWCStripTweet(tweet.getText());
List<CategoryScore> scores = naiveBayes.logClassify(text);
//List<CategoryScore> scores = naiveBayes.classify(text);
for(Iterator<CategoryScore> it = scores.iterator(); it.hasNext();) {
CategoryScore next = it.next();
//Moving average calculation
if(averageScores.containsKey(next.getCategory())) {
averageScores.put(next.getCategory(), (((averageScores.get(next.getCategory())*averageCount)+next.getScore())/(averageCount+1)));
} else {
averageScores.put(next.getCategory(), next.getScore());
}
//System.out.println(next.getCategory().getTitle()+": new logP="+next.getLIWCLogP()+", new avg="+averageScores.get(next.getCategory()));
}
averageCount++;
}
List<CategoryScore> results = new ArrayList<CategoryScore>();
for(Category category : averageScores.keySet()) {
if(categoryBlacklistSet.contains(category.getTitle())) continue; //Don't include blacklist categories
results.add(new CategoryScore(category,averageScores.get(category)));
}
Collections.sort(results);
Collections.reverse(results);
return results;