/** * Gives the probability of a tag at a single position conditioned on a * sequence of previous labels. * * @param position Index in sequence * @param label Label of item at index * @param prevLabels Indices of labels in previous positions * @return conditional log probability */ public double condLogProbGivenPrevious(int position, int label, int[] prevLabels) { if (prevLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenPrevious(prevLabels, label); } else if (prevLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > prevLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(prevLabels, label); } else { int[] p = new int[windowSize - 1]; System.arraycopy(prevLabels, prevLabels.length - p.length, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
public double condLogProbGivenNext(int position, int label, int[] nextLabels) { position = position + nextLabels.length; if (nextLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenNext(nextLabels, label); } else if (nextLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > nextLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(nextLabels, label); } else { int[] p = new int[windowSize - 1]; System.arraycopy(nextLabels, 0, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
double t = 0; for (int k = 0; k < numClasses; k++) { t += Math.exp(ft.conditionalLogProbGivenPrevious(b, k)); System.err .println(k + "|" + i + ',' + j + " : " + Math.exp(ft.conditionalLogProbGivenPrevious(b, k)));
/** * Gives the probability of a tag at a single position conditioned on * a sequence of previous labels. * * @param position Index in sequence * @param label Label of item at index * @param prevLabels * @return conditional log probability */ public double condLogProbGivenPrevious(int position, int label, int[] prevLabels) { if (prevLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenPrevious(prevLabels, label); } else if (prevLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > prevLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(prevLabels, label); } else { int[] p = new int[windowSize-1]; System.arraycopy(prevLabels, prevLabels.length - p.length, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
/** * Gives the probability of a tag at a single position conditioned on a * sequence of previous labels. * * @param position Index in sequence * @param label Label of item at index * @param prevLabels Indices of labels in previous positions * @return conditional log probability */ public double condLogProbGivenPrevious(int position, int label, int[] prevLabels) { if (prevLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenPrevious(prevLabels, label); } else if (prevLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > prevLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(prevLabels, label); } else { int[] p = new int[windowSize - 1]; System.arraycopy(prevLabels, prevLabels.length - p.length, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
/** * Gives the probability of a tag at a single position conditioned on a * sequence of previous labels. * * @param position Index in sequence * @param label Label of item at index * @param prevLabels Indices of labels in previous positions * @return conditional log probability */ public double condLogProbGivenPrevious(int position, int label, int[] prevLabels) { if (prevLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenPrevious(prevLabels, label); } else if (prevLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > prevLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(prevLabels, label); } else { int[] p = new int[windowSize - 1]; System.arraycopy(prevLabels, prevLabels.length - p.length, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
public double condLogProbGivenNext(int position, int label, int[] nextLabels) { position = position + nextLabels.length; if (nextLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenNext(nextLabels, label); } else if (nextLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > nextLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(nextLabels, label); } else { int[] p = new int[windowSize - 1]; System.arraycopy(nextLabels, 0, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
public double condLogProbGivenNext(int position, int label, int[] nextLabels) { position = position + nextLabels.length; if (nextLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenNext(nextLabels, label); } else if (nextLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > nextLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(nextLabels, label); } else { int[] p = new int[windowSize - 1]; System.arraycopy(nextLabels, 0, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
public double condLogProbGivenNext(int position, int label, int[] nextLabels) { position = position+nextLabels.length; if (nextLabels.length + 1 == windowSize) { return factorTables[position].conditionalLogProbGivenNext(nextLabels, label); } else if (nextLabels.length + 1 < windowSize) { FactorTable ft = factorTables[position].sumOutFront(); while (ft.windowSize() > nextLabels.length + 1) { ft = ft.sumOutFront(); } return ft.conditionalLogProbGivenPrevious(nextLabels, label); } else { int[] p = new int[windowSize-1]; System.arraycopy(nextLabels, 0, p, 0, p.length); return factorTables[position].conditionalLogProbGivenPrevious(p, label); } }
double t = 0; for (int k = 0; k < 6; k++) { t += Math.pow(Math.E, ft.conditionalLogProbGivenPrevious(b, k)); System.err.println(k + "|" + i + "," + j + " : " + Math.pow(Math.E, ft.conditionalLogProbGivenPrevious(b, k)));
double t = 0; for (int k = 0; k < numClasses; k++) { t += Math.exp(ft.conditionalLogProbGivenPrevious(b, k)); System.err .println(k + "|" + i + "," + j + " : " + Math.exp(ft.conditionalLogProbGivenPrevious(b, k)));
double t = 0; for (int k = 0; k < numClasses; k++) { t += Math.exp(ft.conditionalLogProbGivenPrevious(b, k)); System.err .println(k + "|" + i + ',' + j + " : " + Math.exp(ft.conditionalLogProbGivenPrevious(b, k)));