⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nestedviterbi.java

📁 这是一个CRF(条件随机域)算法的实现,希望能对从事算法的有些帮助.
💻 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 + -