private static double nodeEntropy(TransitionTable node, int variable, int countPerSplit) { int rowsWithVariable = node.numberOfRowsWithVariable(variable); int rowsWithoutVariable = node.size() - rowsWithVariable; return entropy(rowsWithVariable, countPerSplit) + entropy(rowsWithoutVariable, countPerSplit); }
@BeforeClass public static void initialize() throws Throwable { TRANSITION_TABLE = new TransitionTable<String>(); // From State 0 to State 1 TRANSITION_TABLE.addEntry("twenty", 0, 1); TRANSITION_TABLE.addEntry("thirty", 0, 1); TRANSITION_TABLE.addEntry("forty", 0, 1); TRANSITION_TABLE.addEntry("fifty", 0, 1); TRANSITION_TABLE.addEntry("sixty", 0, 1); TRANSITION_TABLE.addEntry("seventy", 0, 1); TRANSITION_TABLE.addEntry("eighty", 0, 1); TRANSITION_TABLE.addEntry("ninety", 0, 1); // From State 0 to State 2 TRANSITION_TABLE.addEntry("one", 0, 2); TRANSITION_TABLE.addEntry("two", 0, 2); TRANSITION_TABLE.addEntry("three", 0, 2); TRANSITION_TABLE.addEntry("four", 0, 2); TRANSITION_TABLE.addEntry("five", 0, 2); TRANSITION_TABLE.addEntry("six", 0, 2); TRANSITION_TABLE.addEntry("seven", 0, 2); TRANSITION_TABLE.addEntry("eight", 0, 2); TRANSITION_TABLE.addEntry("nine", 0, 2); TRANSITION_TABLE.addEntry("ten", 0, 2); TRANSITION_TABLE.addEntry("twenty", 0, 2); TRANSITION_TABLE.addEntry("thirty", 0, 2); TRANSITION_TABLE.addEntry("forty", 0, 2); TRANSITION_TABLE.addEntry("fifty", 0, 2); TRANSITION_TABLE.addEntry("sixty", 0, 2); TRANSITION_TABLE.addEntry("seventy", 0, 2); TRANSITION_TABLE.addEntry("eighty", 0, 2); TRANSITION_TABLE.addEntry("ninety", 0, 2); TRANSITION_TABLE.addEntry("eleven", 0, 2); TRANSITION_TABLE.addEntry("twelve", 0, 2); TRANSITION_TABLE.addEntry("thirteen", 0, 2); TRANSITION_TABLE.addEntry("fourteen", 0, 2); TRANSITION_TABLE.addEntry("fifteen", 0, 2); TRANSITION_TABLE.addEntry("sixteen", 0, 2); TRANSITION_TABLE.addEntry("seventeen", 0, 2); TRANSITION_TABLE.addEntry("eighteen", 0, 2); TRANSITION_TABLE.addEntry("nineteen", 0, 2); // From State 2 to State 3 - Since State 3 is one of the leaf node. It will be set as END_STATE. TRANSITION_TABLE.addEntry("cents", 2, FSA.END_STATE); // From State 2 to State 4 - State 4 is both end node and forward node. So, it will be set as // MIXED_STATE. TRANSITION_TABLE.addEntry("dollars", 2, 4); TRANSITION_TABLE.addEntry("dollars", 2, FSA.END_STATE); // From State 4 to State 5 TRANSITION_TABLE.addEntry("twenty", 4, 5); TRANSITION_TABLE.addEntry("thirty", 4, 5); TRANSITION_TABLE.addEntry("forty", 4, 5); TRANSITION_TABLE.addEntry("fifty", 4, 5); TRANSITION_TABLE.addEntry("sixty", 4, 5); TRANSITION_TABLE.addEntry("seventy", 4, 5); TRANSITION_TABLE.addEntry("eighty", 4, 5); TRANSITION_TABLE.addEntry("ninety", 4, 5); // From State 4 to State 6 TRANSITION_TABLE.addEntry("one", 4, 6); TRANSITION_TABLE.addEntry("two", 4, 6); TRANSITION_TABLE.addEntry("three", 4, 6); TRANSITION_TABLE.addEntry("four", 4, 6); TRANSITION_TABLE.addEntry("five", 4, 6); TRANSITION_TABLE.addEntry("six", 4, 6); TRANSITION_TABLE.addEntry("seven", 4, 6); TRANSITION_TABLE.addEntry("eight", 4, 6); TRANSITION_TABLE.addEntry("nine", 4, 6); TRANSITION_TABLE.addEntry("ten", 4, 6); TRANSITION_TABLE.addEntry("twenty", 4, 6); TRANSITION_TABLE.addEntry("thirty", 4, 6); TRANSITION_TABLE.addEntry("forty", 4, 6); TRANSITION_TABLE.addEntry("fifty", 4, 6); TRANSITION_TABLE.addEntry("sixty", 4, 6); TRANSITION_TABLE.addEntry("seventy", 4, 6); TRANSITION_TABLE.addEntry("eighty", 4, 6); TRANSITION_TABLE.addEntry("ninety", 4, 6); TRANSITION_TABLE.addEntry("eleven", 4, 6); TRANSITION_TABLE.addEntry("twelve", 4, 6); TRANSITION_TABLE.addEntry("thirteen", 4, 6); TRANSITION_TABLE.addEntry("fourteen", 4, 6); TRANSITION_TABLE.addEntry("fifteen", 4, 6); TRANSITION_TABLE.addEntry("sixteen", 4, 6); TRANSITION_TABLE.addEntry("seventeen", 4, 6); TRANSITION_TABLE.addEntry("eighteen", 4, 6); TRANSITION_TABLE.addEntry("nineteen", 4, 6); // From State 5 to State 6 TRANSITION_TABLE.addEntry("one", 5, 6); TRANSITION_TABLE.addEntry("two", 5, 6); TRANSITION_TABLE.addEntry("three", 5, 6); TRANSITION_TABLE.addEntry("four", 5, 6); TRANSITION_TABLE.addEntry("five", 5, 6); TRANSITION_TABLE.addEntry("six", 5, 6); TRANSITION_TABLE.addEntry("seven", 5, 6); TRANSITION_TABLE.addEntry("eight", 5, 6); TRANSITION_TABLE.addEntry("nine", 5, 6); // From State 6 to State 7 - Since State 7 is one of the leaf node. It will be set as END_STATE. TRANSITION_TABLE.addEntry("cents", 6, FSA.END_STATE); AUTOMATA = new FSA<String>(TRANSITION_TABLE); }