public static Edu.Stanford.Nlp.Classify.OneVsAllClassifier <L, F> Train <L, F>(IClassifierFactory <string, F, IClassifier <string, F> > classifierFactory, GeneralDataset <L, F> dataset, ICollection <L> trainLabels) { IIndex <L> labelIndex = dataset.LabelIndex(); IIndex <F> featureIndex = dataset.FeatureIndex(); IDictionary <L, IClassifier <string, F> > classifiers = Generics.NewHashMap(); foreach (L label in trainLabels) { int i = labelIndex.IndexOf(label); logger.Info("Training " + label + " = " + i + ", posIndex = " + posIndex); // Create training data for training this classifier IDictionary <L, string> posLabelMap = new ArrayMap <L, string>(); posLabelMap[label] = PosLabel; GeneralDataset <string, F> binaryDataset = dataset.MapDataset(dataset, binaryIndex, posLabelMap, NegLabel); IClassifier <string, F> binaryClassifier = classifierFactory.TrainClassifier(binaryDataset); classifiers[label] = binaryClassifier; } Edu.Stanford.Nlp.Classify.OneVsAllClassifier <L, F> classifier = new Edu.Stanford.Nlp.Classify.OneVsAllClassifier <L, F>(featureIndex, labelIndex, classifiers); return(classifier); }