crf.getState("O").setInitialWeight(0.0);
double gamma = gammas[ip][prev]; for (int ci = 0; ci < prevState.numDestinations(); ci++) { int curr = prevState.getDestinationState(ci).getIndex(); double dot = 0; for (GEConstraint constraint : constraints2) {
for (int i = 0; i < this.states.size(); i++) { State thisState = this.states.get(i); State thatState = startingPoint.getState(thisState.getName()); if (thatState == null) continue;
crf.getState("O").setInitialWeight(0.0);
crf.getState("O").setInitialWeight(0.0);
for (int i = 0; i < crf.numStates(); i++) crf.getState(i).setInitialWeight (Transducer.IMPOSSIBLE_WEIGHT); crf.getState(startName).setInitialWeight(0.0);
for (int i = 0; i < crf.numStates(); i++) crf.getState(i).setInitialWeight (Transducer.IMPOSSIBLE_WEIGHT); crf.getState(startName).setInitialWeight(0.0);
for (int i = 0; i < crf.numStates(); i++) crf.getState(i).setInitialWeight (Transducer.IMPOSSIBLE_WEIGHT); crf.getState(startName).setInitialWeight(0.0);
double gamma = gammas[ip][prev]; for (int ci = 0; ci < prevState.numDestinations(); ci++) { int curr = prevState.getDestinationState(ci).getIndex(); double dot = 0; for (GEConstraint constraint : constraints2) {
double gamma = gammas[ip][prev]; for (int ci = 0; ci < prevState.numDestinations(); ci++) { int curr = prevState.getDestinationState(ci).getIndex(); double dot = 0; for (GEConstraint constraint : constraints2) {
for (int ni = 0; ni < currState.numDestinations(); ni++){ int next= currState.getDestinationState(ni).getIndex(); nuBeta.plusEquals(lattice[ip+1][curr].beta[next]); assert(!Double.isNaN(nuBeta.logVal)); double contribution = (covFirstTerm - (transProb * dotEx)); int nwi = crfState.getWeightNames(reverseTransIndices[curr][pi]).length; int weightsIndex; for (int wi = 0; wi < nwi; wi++) { weightsIndex = ((CRF)transducer).getWeightsIndex(crfState.getWeightNames(reverseTransIndices[curr][pi])[wi]); gradient.weights[weightsIndex].plusEqualsSparse (fvs.get(ip), contribution); gradient.defaultWeights[weightsIndex] += contribution;
for (int ni = 0; ni < currState.numDestinations(); ni++){ int next= currState.getDestinationState(ni).getIndex(); nuBeta.plusEquals(lattice[ip+1][curr].beta[next]); assert(!Double.isNaN(nuBeta.logVal)); double contribution = (covFirstTerm - (transProb * dotEx)); int nwi = crfState.getWeightNames(reverseTransIndices[curr][pi]).length; int weightsIndex; for (int wi = 0; wi < nwi; wi++) { weightsIndex = ((CRF)transducer).getWeightsIndex(crfState.getWeightNames(reverseTransIndices[curr][pi])[wi]); gradient.weights[weightsIndex].plusEqualsSparse (fvs.get(ip), contribution); gradient.defaultWeights[weightsIndex] += contribution;
for (int ni = 0; ni < currState.numDestinations(); ni++){ int next= currState.getDestinationState(ni).getIndex(); nuBeta.plusEquals(lattice[ip+1][curr].beta[next]); assert(!Double.isNaN(nuBeta.logVal)); double contribution = (covFirstTerm - (transProb * dotEx)); int nwi = crfState.getWeightNames(reverseTransIndices[curr][pi]).length; int weightsIndex; for (int wi = 0; wi < nwi; wi++) { weightsIndex = ((CRF)transducer).getWeightsIndex(crfState.getWeightNames(reverseTransIndices[curr][pi])[wi]); gradient.weights[weightsIndex].plusEqualsSparse (fvs.get(ip), contribution); gradient.defaultWeights[weightsIndex] += contribution;
out.println (" transitions:"); for (int j = 0; j < s.destinations.length; j++) { out.print (" "); out.print (s.name); out.print (" -> "); out.println (s.getDestinationState (j).getName ()); for (int k = 0; k < s.weightsIndices[j].length; k++) { out.print (" WEIGHTS = \"");
out.println (" transitions:"); for (int j = 0; j < s.destinations.length; j++) { out.print (" "); out.print (s.name); out.print (" -> "); out.println (s.getDestinationState (j).getName ()); for (int k = 0; k < s.weightsIndices[j].length; k++) { out.print (" WEIGHTS = \"");
out.println (" transitions:"); for (int j = 0; j < s.destinations.length; j++) { out.print (" "); out.print (s.name); out.print (" -> "); out.println (s.getDestinationState (j).getName ()); for (int k = 0; k < s.weightsIndices[j].length; k++) { out.print (" WEIGHTS = \"");
for (int si = 0; si < crf.numStates(); si++) { CRF.State prevState = (CRF.State)crf.getState(si); for (int di = 0; di < prevState.numDestinations(); di++) { int sj = prevState.getDestinationState(di).getIndex(); counts[sj]++; for (int si = 0; si < crf.numStates(); si++) { CRF.State prevState = (CRF.State)crf.getState(si); for (int di = 0; di < prevState.numDestinations(); di++) { int sj = prevState.getDestinationState(di).getIndex(); this.reverseTrans[sj][indices[sj]] = si; this.reverseTransIndices[sj][indices[sj]] = di;
for (int si = 0; si < crf.numStates(); si++) { CRF.State prevState = (CRF.State)crf.getState(si); for (int di = 0; di < prevState.numDestinations(); di++) { int sj = prevState.getDestinationState(di).getIndex(); counts[sj]++; for (int si = 0; si < crf.numStates(); si++) { CRF.State prevState = (CRF.State)crf.getState(si); for (int di = 0; di < prevState.numDestinations(); di++) { int sj = prevState.getDestinationState(di).getIndex(); this.reverseTrans[sj][indices[sj]] = si; this.reverseTransIndices[sj][indices[sj]] = di;