package edu.stanford.nlp.process;
import java.util.ArrayList;
import java.util.List;
import edu.stanford.nlp.ling.Document;
/**
* Class AbstractListProcessor
*
* @author Teg Grenager
* @author Sarah Spikes (sdspikes@cs.stanford.edu) (Templatization)
*
* @param <IN> The type of the input document tokens
* @param <OUT> The type of the output document tokens
* @param <L> The type of the labels (for the document for classification)
* @param <F> The type of the features (for the document for classification)
*/
public abstract class AbstractListProcessor<IN,OUT,L,F> implements ListProcessor<IN,OUT>, DocumentProcessor<IN,OUT, L, F> {
public AbstractListProcessor() {
}
public Document<L, F, OUT> processDocument(Document<L, F, IN> in) {
Document<L, F, OUT> doc = in.blankDocument();
doc.addAll(process(in));
return doc;
}
/** Process a list of lists of tokens. For example this might be a
* list of lists of words.
*
* @param lists a List of objects of type List
* @return a List of objects of type List, each of which has been processed.
*/
public List<List<OUT>> processLists(List<List<IN>> lists) {
List<List<OUT>> result = new ArrayList<>(lists.size());
for (List<IN> list : lists) {
List<OUT> outList = process(list);
result.add(outList);
}
return result;
}
}