Маллет: Алфавиты не совпадают, исключение при повторном создании модели в одной программе

Я изучил маллет, и он работает хорошо. То, что я пытаюсь сделать, это дважды создать модель в области программы и столкнуться с исключением. Мой программный код выглядит так:

List<String> commands = new ArrayList<String>();
commands.add("--input input.mallet --output-classifier output_classifier.classifier --trainer MaxEnt --report train:accuracy");

commands.add("--input input.mallet --output-classifier output_classifier.classifier --trainer MaxEnt --report train:accuracy");

for( int index = 0; index < commands.size(); index++ ) {
    try {
        Vectors2Classify.main(commands.get(index).split(" "));
    } catch (EvalError e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Первая команда выполняется успешно. По второй команде я получаю следующее исключение.

Exception in thread "main" java.lang.IllegalArgumentException: Alphabets don't match: Instance: [9327, 3], InstanceList: [9327, 3]

    at cc.mallet.types.InstanceList.add(InstanceList.java:335)
    at cc.mallet.types.InstanceList.shallowClone(InstanceList.java:213)
    at cc.mallet.types.InstanceList.split(InstanceList.java:513)
    at cc.mallet.classify.tui.Vectors2Classify.main(Vectors2Classify.java:397)

Я искал эту проблему, но не нашел решения до сих пор. Похоже, до сих пор никто не пытался сделать модель дважды в рамках программы.
Если кто-то может помочь мне в этом, буду благодарен вам.


person Hammad Hassan    schedule 16.01.2018    source источник


Ответы (1)


Функция main предназначена для однократного вызова в ходе выполнения программы. Вероятно, есть какая-то переменная, которая передается от одного вызова к другому. В этом Vectors2Classify есть много логики для выяснения намерений пользователя из аргументов командной строки. Если вам нужно написать код Java, копирование кода из Vectors2Classify, чтобы делать именно то, что вы хотите, вероятно, является лучшим вариантом.

person David Mimno    schedule 18.01.2018