//calculate the novelty of the giving current feature private double calculateNovelty(Feature current, Feature oldTopic) { double noveltyValue = 0; // distance double dist = oldTopic.ShortestDistance[featGraph.getFeatureIndex(current.Data)] / featGraph.MaxDistance; // previous talk double previousTalkPercentage = this.getNeighborDiscussAmount(current); // tags double funFactTag = 0.0; if (current.findTagType(FUN_FACT) != null) { funFactTag = 1.0; } noveltyValue = dist * 0.5 + previousTalkPercentage * 0.5 + funFactTag * 0.5; if (printCalculation) { Console.WriteLine("Novelty Calculation"); Console.WriteLine("Distance from current topic to previous topic: " + dist); Console.WriteLine("Percentage of related topics NOT covered: " + previousTalkPercentage); Console.WriteLine("Fun fact: " + funFactTag); Console.WriteLine("Novelty Value (0.5* distance + 0.5* % of related topics Not covered + 0.5*fun fact): " + noveltyValue); } return noveltyValue; }