// Path: edits-core/src/main/java/org/edits/etaf/AnnotatedEntailmentPair.java
// @Data
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlType(name = "AnnotatedEntailmentPair", propOrder = { "t", "h" })
// public class AnnotatedEntailmentPair {
// 
// 	public static AnnotatedEntailmentPair create(String t2, String h2, EditsTextAnnotator annotator) throws Exception {
// 		AnnotatedEntailmentPair px = new AnnotatedEntailmentPair();
// 		AnnotatedText at = new AnnotatedText();
// 		at.getAnnotation().addAll(annotator.annotate(t2));
// 		px.getT().add(at);
// 		at = new AnnotatedText();
// 		at.getAnnotation().addAll(annotator.annotate(h2));
// 		px.getH().add(at);
// 		return px;
// 	}
// 
// 	@XmlTransient
// 	private Map<String, String> attributes;
// 	@XmlAttribute
// 	protected String entailment;
// 	@XmlElement
// 	protected List<AnnotatedText> h;
// 	@XmlAttribute
// 	protected String id;
// 
// 	@XmlTransient
// 	private int order;
// 
// 	@XmlElement
// 	protected List<AnnotatedText> t;
// 
// 	@XmlAttribute
// 	protected String task;
// 
// 	public AnnotatedEntailmentPair() {
// 		t = Lists.newArrayList();
// 		h = Lists.newArrayList();
// 		attributes = Maps.newHashMap();
// 	}
// 
// }


import java.util.List;
import lombok.Data;
import org.edits.etaf.AnnotatedEntailmentPair;
import java.io.Serializable;
/**
 * Edits - Edit Distance Textual Entailment Suite Copyright (C) 2011 Milen
 * Kouylekov This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 3.0 of the License,
 * or (at your option) any later version. This library is distributed in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
 * the GNU Lesser General Public License for more details. You should have
 * received a copy of the GNU Lesser General Public License along with this
 * library; if not, write to the Free Software Foundation, Inc., 51 Franklin
 * Street, Fifth Floor, Boston, MA 02110-1301 USA
 */
package org.edits.engines;




/**
 * 
 * @author Milen Kouylekov
 * 
 */
@Data
public abstract class EntailmentEngine implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private OptimizationGoal goal;

	public abstract EvaluationResult evaluate(AnnotatedEntailmentPair p);

	public void setDefaultGoal() {
		goal = new OptimizationGoal();
	}

// Path: edits-core/src/main/java/org/edits/etaf/AnnotatedEntailmentPair.java
// @Data
// @XmlAccessorType(XmlAccessType.FIELD)
// @XmlType(name = "AnnotatedEntailmentPair", propOrder = { "t", "h" })
// public class AnnotatedEntailmentPair {
// 
// 	public static AnnotatedEntailmentPair create(String t2, String h2, EditsTextAnnotator annotator) throws Exception {
// 		AnnotatedEntailmentPair px = new AnnotatedEntailmentPair();
// 		AnnotatedText at = new AnnotatedText();
// 		at.getAnnotation().addAll(annotator.annotate(t2));
// 		px.getT().add(at);
// 		at = new AnnotatedText();
// 		at.getAnnotation().addAll(annotator.annotate(h2));
// 		px.getH().add(at);
// 		return px;
// 	}
// 
// 	@XmlTransient
// 	private Map<String, String> attributes;
// 	@XmlAttribute
// 	protected String entailment;
// 	@XmlElement
// 	protected List<AnnotatedText> h;
// 	@XmlAttribute
// 	protected String id;
// 
// 	@XmlTransient
// 	private int order;
// 
// 	@XmlElement
// 	protected List<AnnotatedText> t;
// 
// 	@XmlAttribute
// 	protected String task;
// 
// 	public AnnotatedEntailmentPair() {
// 		t = Lists.newArrayList();
// 		h = Lists.newArrayList();
// 		attributes = Maps.newHashMap();
// 	}
// 
// }


// Path: edits-core/src/main/java/org/edits/engines/EntailmentEngine.java
import java.util.List;
import lombok.Data;
import org.edits.etaf.AnnotatedEntailmentPair;
import java.io.Serializable;

/**
 * Edits - Edit Distance Textual Entailment Suite Copyright (C) 2011 Milen
 * Kouylekov This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 3.0 of the License,
 * or (at your option) any later version. This library is distributed in the
 * hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
 * the GNU Lesser General Public License for more details. You should have
 * received a copy of the GNU Lesser General Public License along with this
 * library; if not, write to the Free Software Foundation, Inc., 51 Franklin
 * Street, Fifth Floor, Boston, MA 02110-1301 USA
 */
package org.edits.engines;




/**
 * 
 * @author Milen Kouylekov
 * 
 */
@Data
public abstract class EntailmentEngine implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private OptimizationGoal goal;

	public abstract EvaluationResult evaluate(AnnotatedEntailmentPair p);

	public void setDefaultGoal() {
		goal = new OptimizationGoal();
	}

	public abstract EvaluationStatistics train(List<AnnotatedEntailmentPair> processor) throws Exception;