📄 nestedviterbi.java
字号:
package iitb.CRF;/** * * NestedViterbi search * * @author Sunita Sarawagi * */ public class NestedViterbi extends Viterbi { NestedCRF nestedModel; NestedViterbi(NestedCRF nestedModel, int bs) { super(nestedModel, bs); this.nestedModel = nestedModel; } double fillArray(DataSequence dataSeq, double lambda[], boolean calcScore) { int numY = model.numY; int maxLen = nestedModel.featureGenNested.maxMemory(); for (int i = 0; i < dataSeq.length(); i++) { for (int yi = 0; yi < numY; winningLabel[yi++][i].clear()); for (int ell = 1; (ell <= maxLen) && (i-ell >= -1); ell++) { nestedModel.featureGenNested.startScanFeaturesAt(dataSeq, i-ell,i); Trainer.computeLogMi(model.featureGenerator,lambda,Mi,Ri,false); for (int yi = 0; yi < numY; yi++) { if (i-ell < 0) { winningLabel[yi][i].add((float)Ri.get(yi)); } else { for (int yp = 0; yp < numY; yp++) { double val = Mi.get(yp,yi)+Ri.get(yi); winningLabel[yi][i].add(winningLabel[yp][i-ell], (float)val); } } } } } return 0; } public void bestLabelSequence(SegmentDataSequence dataSeq, double lambda[]) { viterbiSearch(dataSeq, lambda,false); Soln ybest = finalSoln.get(0); ybest = ybest.prevSoln; while (ybest != null) { dataSeq.setSegment(ybest.prevPos()+1,ybest.pos,ybest.label); ybest = ybest.prevSoln; } }};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -