Classifier4J Классификация продукции - PullRequest
0 голосов
/ 07 января 2019

Я хочу классифицировать названия продуктов по нескольким категориям, таким как:

  • VEGAN
  • ВЕГЕТАРИАНСКИЕ
  • OMNIVORE
  • и т.д..

Я нашел хороший подход для этого с помощью BayesianClassifer Classifier4J. Я попытался написать небольшой прототип и получил исключение при использовании BayesianClassifer в Classifier4J.

Exception in thread "main" java.lang.IllegalArgumentException: Word Data Source does not support non-default categories.
at net.sf.classifier4J.bayesian.BayesianClassifier.checkCategoriesSupported(BayesianClassifier.java:354)
at net.sf.classifier4J.bayesian.BayesianClassifier.teachMatch(BayesianClassifier.java:180)
at classification.Application.main(Application.java:23)

Я только добавил несколько Matches и NonMachtes в классификатор, но я не нахожу способ добавить категории, потому что исключение говорит, что оно не поддерживает категории, не являющиеся значениями по умолчанию.

    IWordsDataSource wds = new SimpleWordsDataSource();
    BayesianClassifier classifier1 = new BayesianClassifier(wds);
    classifier1.teachMatch("VEGAN","Sonnenblumenkerne");
    classifier1.teachMatch("VEGAN","Kerne");
    classifier1.teachMatch("VEGAN","Cashew");
    classifier1.teachMatch("VEGAN","Mandeln");
    classifier1.teachMatch("VEGAN","Sonnenblumenkerne");
    classifier1.teachMatch("OMNIVORE","Rind");
    classifier1.teachMatch("OMNIVORE","Huhn");
    classifier1.teachMatch("OMNIVORE","Fleisch");
    classifier1.teachMatch("OMNIVORE","Speck");
    classifier1.teachMatch("OMNIVORE","Pute");
    classifier1.teachMatch("VEGETARIAN","GEMÜSE");
    classifier1.teachMatch("VEGETARIAN","Milch");
    classifier1.teachMatch("VEGETARIAN","Ei");
    classifier1.teachMatch("VEGETARIAN","Soja");

    classifier1.teachNonMatch("VEGAN","Rind");
    classifier1.teachNonMatch("VEGAN","Huhn");
    classifier1.teachNonMatch("VEGAN","Fleisch");
    classifier1.teachNonMatch("VEGAN","Speck");
    classifier1.teachNonMatch("VEGAN","Pute");
    classifier1.teachNonMatch("VEGAN","GEMÜSE");
    classifier1.teachNonMatch("VEGAN","Milch");
    classifier1.teachNonMatch("VEGAN","Ei");
    classifier1.teachNonMatch("VEGAN","Soja");


    System.out.println("MAtches = " + classifier1.classify("VEGAN","GEMÜSE"));

Либо я что-то упустил, либо я перечитал некоторые важные вещи.

...