docs: public Pair<Integer, Integer> validate(List<SequenceTuple> testingData) {
          int total = testingData.stream().mapToInt(st -> st.entries.size()).sum();
          int err = 0;
          for (SequenceTuple st : testingData) {
              List<String> actual = predict(st).stream().map(Pair::getLeft).collect(Collectors.toList());
              List<String> expected = st.getLabel();
              if (actual.size() != expected.size()) {
                  throw new RuntimeException("Actual size: " + actual.size() + "\tExpected size: " + expected.size());
              }
  
              for (int i = 0; i < actual.size(); i++) {
                  if (!actual.get(i).equals(expected.get(i))) {
                      err++;
                  }
              }
          }
  
          System.out.println("Err/Total: " + err + "/" + total);
          System.out.println("Accuracy: " + (1 - (err / (double) total)) * 100 + "%");
          return new ImmutablePair<>(err, total);
      }