/** * */ package edu.berkeley.nlp.PCFGLA; /** * @author petrov * */ public class HyperEdge{ int parentState, lChildState, rChildState, childState; boolean isUnary; double score, ruleScore; int start, split, end; int parentBest, lChildBest, rChildBest, childBest; boolean alreadyExpanded; public HyperEdge(int pState, int lState, int rState, int pBest, int lBest, int rBest, int begin, int mid, int finale, double cost, double ruleCost){ this.parentState = pState; this.lChildState = lState; this.rChildState = rState; this.parentBest = pBest; this.lChildBest = lBest; this.rChildBest = rBest; this.childState = -1; this.start = begin; this.split = mid; this.end = finale; this.score = cost; this.isUnary = false; this.ruleScore = ruleCost; } public HyperEdge(int pState, int cState, int pBest, int cBest, int begin, int finale, double cost, double ruleCost){ this.parentState = pState; this.childState = cState; this.lChildState = -1; this.rChildState = -1; this.parentBest = pBest; this.childBest = cBest; this.start = begin; this.end = finale; this.score = cost; this.isUnary = true; this.ruleScore = ruleCost; } public boolean differsInPOSatMost(HyperEdge other, boolean[] grammarTags){ // assume the edges go over the same span and have the same head if (this.split!=other.split) return false; // if (this.score==other.score) // return true; if (this.isUnary){ if (/*this.score==other.score*/this.childBest==other.childBest&&other.childState==this.childState) return true; } else { if (this.end-this.split==1 && this.lChildState==other.lChildState&& /*this.score==other.score*/this.lChildBest==other.lChildBest&&!grammarTags[this.rChildState]&&!grammarTags[other.rChildState]) return true; if (this.split-this.start==1&& this.rChildState==other.rChildState&& /*this.score==other.score*/this.rChildBest==other.rChildBest) return true; if (this.lChildState==other.lChildState&& this.rChildState==other.rChildState&& /*this.score==other.score*/this.rChildBest==other.rChildBest&&this.lChildBest==other.lChildBest&&!grammarTags[this.lChildState]&&!grammarTags[other.lChildState]) return true; } return false; } }