// Path: edits-core/src/main/java/org/edits/EditsTextAnnotator.java
// public interface EditsTextAnnotator {
// 
// 	public List<Annotation> annotate(String text) throws Exception;
// 
// }
// 
// Path: edits-core/src/main/java/org/edits/etaf/Annotation.java
// @Data
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlType(name = "Annotation", propOrder = {})
// @XmlRootElement(name = "annotation")
// public class Annotation {
// 
// 	@XmlAttribute
// 	private String cpostag;
// 	@XmlAttribute
// 	private String deprel;
// 	@XmlAttribute
// 	private int end;
// 	@XmlAttribute
// 	private String feats;
// 	@XmlAttribute
// 	private String form;
// 	@XmlAttribute
// 	private String head;
// 	@XmlAttribute
// 	private String id;
// 	@XmlAttribute
// 	private String lemma;
// 	@XmlAttribute
// 	private String postag;
// 	@XmlAttribute
// 	private int start;
// 
// }


import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import org.edits.EditsTextAnnotator;
import org.edits.etaf.Annotation;
	private List<Annotation> convert(List<String[]> output) {
		List<Annotation> out = new ArrayList<Annotation>();
		for (String[] x : output) {

			if (x[2].equals("<unknown>"))
				x[2] = x[0].toLowerCase();

			Annotation t = new Annotation();
			t.setId("" + (out.size() + 1));
			t.setForm(x[0]);
			t.setLemma(x[2]);
			t.setCpostag(toGeneral(x[1]));
			t.setPostag(x[1]);
			out.add(t);
		}
		return out;
	}

	private List<List<String[]>> process(List<String> text) throws Exception {
		List<List<String[]>> n = new ArrayList<List<String[]>>();
		StringBuilder b = new StringBuilder();
		for (String t : text)
			b.append(t + " <end> ");
		List<String[]> cx = process(b.toString());
		List<String[]> current = new ArrayList<String[]>();
		for (String[] c : cx) {
			if (c[0].equals("<end>")) {
				n.add(current);
				current = new ArrayList<String[]>();
			} else
// Path: edits-core/src/main/java/org/edits/EditsTextAnnotator.java
// public interface EditsTextAnnotator {
// 
// 	public List<Annotation> annotate(String text) throws Exception;
// 
// }
// 
// Path: edits-core/src/main/java/org/edits/etaf/Annotation.java
// @Data
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlType(name = "Annotation", propOrder = {})
// @XmlRootElement(name = "annotation")
// public class Annotation {
// 
// 	@XmlAttribute
// 	private String cpostag;
// 	@XmlAttribute
// 	private String deprel;
// 	@XmlAttribute
// 	private int end;
// 	@XmlAttribute
// 	private String feats;
// 	@XmlAttribute
// 	private String form;
// 	@XmlAttribute
// 	private String head;
// 	@XmlAttribute
// 	private String id;
// 	@XmlAttribute
// 	private String lemma;
// 	@XmlAttribute
// 	private String postag;
// 	@XmlAttribute
// 	private int start;
// 
// }


// Path: edits-nlp/src/main/java/org/edits/nlp/ClassicTreeTagger.java
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;
import org.edits.EditsTextAnnotator;
import org.edits.etaf.Annotation;

	private List<Annotation> convert(List<String[]> output) {
		List<Annotation> out = new ArrayList<Annotation>();
		for (String[] x : output) {

			if (x[2].equals("<unknown>"))
				x[2] = x[0].toLowerCase();

			Annotation t = new Annotation();
			t.setId("" + (out.size() + 1));
			t.setForm(x[0]);
			t.setLemma(x[2]);
			t.setCpostag(toGeneral(x[1]));
			t.setPostag(x[1]);
			out.add(t);
		}
		return out;
	}

	private List<List<String[]>> process(List<String> text) throws Exception {
		List<List<String[]>> n = new ArrayList<List<String[]>>();
		StringBuilder b = new StringBuilder();
		for (String t : text)
			b.append(t + " <end> ");
		List<String[]> cx = process(b.toString());
		List<String[]> current = new ArrayList<String[]>();
		for (String[] c : cx) {
			if (c[0].equals("<end>")) {
				n.add(current);
				current = new ArrayList<String[]>();
			} else
				current.add(c);