private static string[] GetDetails(Classifier classifier, List <FeatureVector> vectors, TextIdMapper classToClassId, TextIdMapper featureToFeatureId) { TBLClassifier tblClassifier = (TBLClassifier)classifier; var systemClasses = new int[vectors.Count]; var details = new string[vectors.Count]; for (int v_i = 0; v_i < vectors.Count; v_i++) { StringBuilder sb = new StringBuilder(); int currentClass = tblClassifier.DefaultClass; foreach (TBLClassifier.Transformation t in tblClassifier.Transformations) { int newClass = tblClassifier.Transform(currentClass, t, vectors[v_i]); if (newClass == currentClass) { continue; } string featName = featureToFeatureId[t.FeatureId]; string from_class = classToClassId[t.FromClass]; string to_class = classToClassId[t.ToClass]; sb.AppendFormat($" {featName} {from_class} {to_class}"); currentClass = newClass; } systemClasses[v_i] = currentClass; details[v_i] = sb.ToString(); } return(details); }
// Methods public override int ExecuteCommand() { FeatureVectorFile vectorFile = new FeatureVectorFile(path: vector_data, noOfHeaderColumns: 1, featureDelimiter: ':', isSortRequired: false); int gold_i = 0; TBLClassifier classifier = null; Program.TrainModel(vectorFile, model_file, classifierFactory: (vectors, classToClassId, featureToFeatureId) => { return(classifier = new TBLClassifier(vectors, classToClassId.Count, min_gain, gold_i)); } ); return(classifier.Transformations.Count); }
// Methods public override double ExecuteCommand() { int gold_i = 0; FeatureVectorFile vectorFile = new FeatureVectorFile(path: vector_file, noOfHeaderColumns: 1, featureDelimiter: ':', isSortRequired: false); var accuracy = Program.ReportOnModel(vectorFile, sys_output , classifierFactory: (classToClassId, featureToFeatureId) => { return(TBLClassifier.LoadModel(model_file, classToClassId, featureToFeatureId, N, gold_i)); } , getDetailsFunc: GetDetails ); return(accuracy); }