package edu.stanford.nlp.parser.lexparser; import java.util.List; import edu.stanford.nlp.ling.HasWord; /** @author Dan Klein */ class ProjectionScorer implements Scorer { protected GrammarProjection gp; protected Scorer scorer; protected final Options op; protected Edge project(Edge edge) { Edge tempEdge = new Edge(op.testOptions.exhaustiveTest); tempEdge.start = edge.start; tempEdge.end = edge.end; tempEdge.state = gp.project(edge.state); tempEdge.head = edge.head; tempEdge.tag = edge.tag; return tempEdge; } protected Hook project(Hook hook) { Hook tempHook = new Hook(op.testOptions.exhaustiveTest); tempHook.start = hook.start; tempHook.end = hook.end; tempHook.state = gp.project(hook.state); tempHook.head = hook.head; tempHook.tag = hook.tag; tempHook.subState = gp.project(hook.subState); return tempHook; } public double oScore(Edge edge) { return scorer.oScore(project(edge)); } public double iScore(Edge edge) { return scorer.iScore(project(edge)); } public boolean oPossible(Hook hook) { return scorer.oPossible(project(hook)); } public boolean iPossible(Hook hook) { return scorer.iPossible(project(hook)); } public boolean parse(List<? extends HasWord> words) { return scorer.parse(words); } public ProjectionScorer(Scorer scorer, GrammarProjection gp, Options op) { this.scorer = scorer; this.gp = gp; this.op = op; } } // end ProjectionScorer