ClassifierExample.java :  » Natural-Language-Processing » Stanford-Classifer » edu » stanford » nlp » classify » Java Open Source

Java Open Source » Natural Language Processing » Stanford Classifer 
Stanford Classifer » edu » stanford » nlp » classify » ClassifierExample.java
package edu.stanford.nlp.classify;

import edu.stanford.nlp.ling.BasicDatum;
import edu.stanford.nlp.ling.Datum;

import java.util.ArrayList;
import java.util.List;

/**
 * Sample code that illustrates the training and use of a linear classifier.
 * @author Dan Klein
 */
public class ClassifierExample {

  protected static final String GREEN = "green";
  protected static final String RED = "red";
  protected static final String WORKING = "working";
  protected static final String BROKEN = "broken";


  private ClassifierExample() {}
  

  protected static Datum makeStopLights(String ns, String ew) {
    List<String> features = new ArrayList<String>();
    // Create the north-south light feature
    features.add("NS=" + ns);
    // Create the east-west light feature
    features.add("EW=" + ew);
    // Create the label
    String label = (ns.equals(ew) ? BROKEN : WORKING);
    return new BasicDatum(features, label);
  }


  public static void main(String[] args) {
    // Create a training set
    List<Datum> trainingData = new ArrayList<Datum>();
    trainingData.add(makeStopLights(GREEN, RED));
    trainingData.add(makeStopLights(GREEN, RED));
    trainingData.add(makeStopLights(GREEN, RED));
    trainingData.add(makeStopLights(RED, GREEN));
    trainingData.add(makeStopLights(RED, GREEN));
    trainingData.add(makeStopLights(RED, GREEN));
    trainingData.add(makeStopLights(RED, RED));
    // Create a test set
    Datum workingLights = makeStopLights(GREEN, RED);
    Datum brokenLights = makeStopLights(RED, RED);
    // Build a classifier factory
    LinearClassifierFactory factory = new LinearClassifierFactory();
    factory.useConjugateGradientAscent();
    // Turn on per-iteration convergence updates
    factory.setVerbose(true);
    //Small amount of smoothing
    factory.setSigma(10.0);
    // Build a classifier
    LinearClassifier classifier = (LinearClassifier) factory.trainClassifier(trainingData);
    // Check out the learned weights
    classifier.dump();
    // Test the classifier
    System.out.println("Working instance got: " + classifier.classOf(workingLights));
    classifier.justificationOf(workingLights);
    System.out.println("Broken instance got: " + classifier.classOf(brokenLights));
    classifier.justificationOf(brokenLights);
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.