Я хочу классифицировать названия продуктов по нескольким категориям, таким как:
- 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"));
Либо я что-то упустил, либо я перечитал некоторые важные вещи.