|
21 | 21 | import io.github.mzattera.v4j.util.Counter;
|
22 | 22 | import io.github.mzattera.v4j.util.statemachine.SlotBasedModel;
|
23 | 23 | import io.github.mzattera.v4j.util.statemachine.StateMachine;
|
24 |
| -import io.github.mzattera.v4j.util.statemachine.StateMachine.TrainMode; |
25 | 24 |
|
26 | 25 | /**
|
27 | 26 | * Evaluates F1 score for models of Voynich words, considered as a classifiers
|
@@ -351,7 +350,7 @@ private static void evaluatePalmer(Counter<String> voynichTokens) throws ParseEx
|
351 | 350 |
|
352 | 351 | if (p.matcher(t).matches()) {
|
353 | 352 | ++tp;
|
354 |
| - ttp += voynichTokens.getCount(t); |
| 353 | + ttp += voynichTokens.getCount(t); |
355 | 354 | }
|
356 | 355 | }
|
357 | 356 |
|
@@ -634,88 +633,6 @@ private static void evaluateSlotMachine(Counter<String> voynichTokens) throws Pa
|
634 | 633 | evaluate("SM", voynichTokens, SlotAlphabet.toEva(m.emit().itemSet()));
|
635 | 634 | }
|
636 | 635 |
|
637 |
| - /** |
638 |
| - * Evaluate Slots state machine model. This is old model written manually. |
639 |
| - * |
640 |
| - * @param voynichTokens List of Voynich terms (EVA). |
641 |
| - */ |
642 |
| - private static void evaluateSlotMachineOld(Counter<String> voynichTokens) throws ParseException { |
643 |
| - |
644 |
| - StateMachine m = new StateMachine(); |
645 |
| - m.setInitialState(m.addState("Start")); |
646 |
| - m.addState("Slot_0"); |
647 |
| - m.addState("0_q", "q"); |
648 |
| - m.addState("0_s", "s"); |
649 |
| - m.addState("0_d", "d"); |
650 |
| - m.addState("Slot_1"); |
651 |
| - m.addState("1_y", "y"); |
652 |
| - m.addState("1_o", "o"); |
653 |
| - m.addState("Slot_2"); |
654 |
| - m.addState("2_r", "r"); |
655 |
| - m.addState("2_l", "l"); |
656 |
| - m.addState("3_Gallows", new String[] { "t", "p", "k", "f" }); |
657 |
| - m.addState("4_Pedestals", new String[] { "ch", "sh" }); |
658 |
| - m.addState("5_PedGallows", new String[] { "cth", "cph", "ckh" }); // MISSING cfh |
659 |
| - m.addState("6_eSeq", new String[] { "e", "ee" }); // MISSING eee |
660 |
| - m.addState("Slot_7"); |
661 |
| - m.addState("7_d", "d"); |
662 |
| - m.addState("7_s", "s"); |
663 |
| - // m.addState("7_Gallows", new String[] {"t","p","k","f"}); |
664 |
| - m.addState("7_Gallows", new String[] {}); // REMOVED |
665 |
| - m.addState("Slot_8"); |
666 |
| - m.addState("8_a", "a"); |
667 |
| - m.addState("8_o", "o"); |
668 |
| - m.addState("9_iSeq", new String[] { "i", "ii" }); // MISSING iii |
669 |
| - m.addState("Slot_10"); |
670 |
| - m.addState("10_d", "d"); |
671 |
| - m.addState("10_lr", new String[] { "l", "r" }); |
672 |
| - m.addState("10_mn", new String[] { "m", "n" }); |
673 |
| - m.addState("11_y", "y"); |
674 |
| - m.addState("End", true); |
675 |
| - |
676 |
| - // ***** TODO test optional states, optional characters and splitting C and S |
677 |
| - |
678 |
| - m.addNext("Start", new String[] { "Slot_0", "Slot_1", "Slot_2", "3_Gallows", "4_Pedestals", "5_PedGallows", |
679 |
| - "7_d", "7_s", "8_a", "6_eSeq" }); // (Possibly slot 6) IT WORKS |
680 |
| - m.addNext("Slot_0", new String[] { "0_q", "0_d", "0_s" }); |
681 |
| - m.addNext("0_q", new String[] { "1_o" }); |
682 |
| - m.addNext("0_s", new String[] { "1_o", "4_Pedestals" }); |
683 |
| - m.addNext("0_d", new String[] { "1_o", "1_y", "4_Pedestals" }); |
684 |
| - m.addNext("Slot_1", new String[] { "1_y", "1_o" }); |
685 |
| - m.addNext("1_y", new String[] { "3_Gallows", "4_Pedestals" }); |
686 |
| - m.addNext("1_o", new String[] { "Slot_2", "3_Gallows", "4_Pedestals", "5_PedGallows", "6_eSeq", "7_d", "8_a" }); |
687 |
| - m.addNext("Slot_2", new String[] { "2_l", "2_r" }); |
688 |
| - m.addNext("2_r", new String[] { "4_Pedestals", "Slot_8" }); |
689 |
| - m.addNext("2_l", new String[] { "3_Gallows", "4_Pedestals", "7_d", "Slot_8" }); |
690 |
| - m.addNext("3_Gallows", new String[] { "4_Pedestals", "6_eSeq", "Slot_8", "11_y" }); // (7_d, 11_y ??) 11_y WORKS |
691 |
| - m.addNext("4_Pedestals", new String[] { "6_eSeq", "Slot_7", "Slot_8", "11_y" }); // consider keeping them |
692 |
| - // separate? S won-t connect |
693 |
| - // to 7_s |
694 |
| - m.addNext("5_PedGallows", new String[] { "6_eSeq", "Slot_8", "7_d", "11_y" }); // (possibly 7_d, 11_y) THEY BOTH |
695 |
| - // WORK |
696 |
| - m.addNext("6_eSeq", new String[] { "Slot_7", "Slot_8", "11_y", "End" }); // possibly End // WORKS |
697 |
| - m.addNext("Slot_7", new String[] { "7_d", "7_s", "7_Gallows" }); |
698 |
| - m.addNext("7_d", new String[] { "8_o", "8_a", "11_y", "End" }); |
699 |
| - m.addNext("7_s", new String[] { "8_a", "11_y", "End" }); // possibly 8_o? it does in slot 1 - NOT WORKING -> |
700 |
| - // looks better if 8_a is removed |
701 |
| - m.addNext("7_Gallows", new String[] { "8_a", "11_y" }); // possibly 8_o? - NOT WORKING -> Looks better if |
702 |
| - // removed completely |
703 |
| - m.addNext("Slot_8", new String[] { "8_a", "8_o" }); |
704 |
| - m.addNext("8_a", new String[] { "9_iSeq", "10_lr", "10_mn" }); // Possibly END? - NOT WORKING |
705 |
| - m.addNext("8_o", new String[] { "10_lr", "10_mn", "End" }); // Possibly END? - IT WORKS VERY WELL |
706 |
| - m.addNext("9_iSeq", new String[] { "10_lr", "10_mn" }); |
707 |
| - m.addNext("Slot_10", new String[] { "10_d", "10_lr", "10_mn" }); |
708 |
| - m.addNext("10_d", new String[] { "11_y", "End" }); |
709 |
| - m.addNext("10_lr", new String[] { "11_y", "End" }); |
710 |
| - m.addNext("10_mn", new String[] { "End" }); |
711 |
| - m.addNext("11_y", new String[] { "End" }); |
712 |
| - |
713 |
| - evaluate("SMOLD", voynichTokens, m.emit().itemSet()); |
714 |
| - |
715 |
| - m.train(voynichTokens.itemSet(), TrainMode.F1); |
716 |
| - evaluate("SMOLDTRN", voynichTokens, m.emit().itemSet()); |
717 |
| - } |
718 |
| - |
719 | 636 | /**
|
720 | 637 | * Evaluates and prints stats for a word generation model.
|
721 | 638 | *
|
|
0 commit comments