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

📄 segmentcrf.java

📁 这是一个CRF(条件随机域)算法的实现,希望能对从事算法的有些帮助.
💻 JAVA
字号:
/* * Created on Nov 21, 2004 * * This is a version of the CRF model that applies the semi-markov * model on data where the candidate segments are provided by the dataset. */package iitb.CRF;import gnu.trove.TIntArrayList;import gnu.trove.TIntFloatHashMap;/** * @author sunita * */public class SegmentCRF extends CRF {	FeatureGeneratorNested featureGenNested;	transient SegmentViterbi segmentViterbi;	public SegmentCRF(int numLabels, FeatureGeneratorNested fgen, String arg) {		super(numLabels,fgen,arg);		featureGenNested = fgen;		segmentViterbi = new SegmentViterbi(this,1);	}	public SegmentCRF(int numLabels, FeatureGeneratorNested fgen, java.util.Properties configOptions) {		super(numLabels,fgen,configOptions);		featureGenNested = fgen;		segmentViterbi = new SegmentViterbi(this,1);	}	public interface ModelGraph {	    public int numStates();	    public void stateMappingGivenLength(int label, int len, TIntArrayList stateIds) 	    throws Exception;	};	/*	public SegmentCRF(int numLabels, FeatureGeneratorNested fgen, FeatureGenerator markovGen, 	        ModelGraph modelGraph, java.util.Properties configOptions) {		super(numLabels,fgen,configOptions);		combinedFeatureCache = new CombinedFeatureCache(numLabels,fgen,markovGen, modelGraph);		featureGenNested = combinedFeatureCache;		segmentViterbi = new SegmentViterbi(this,1);	}*/	protected Trainer getTrainer() {		if (params.trainerType.startsWith("SegmentCollins"))			return new NestedCollinsTrainer(params);		return new SegmentTrainer(params);	}	protected Viterbi getViterbi(int beamsize) {		return new SegmentViterbi(this,beamsize);	}	public void apply(CandSegDataSequence dataSeq, int rank) {	    if (segmentViterbi==null)	        segmentViterbi = (SegmentViterbi)getViterbi(1);		segmentViterbi.bestLabelSequence(dataSeq,lambda);	}	public void singleSegmentClassScores(CandSegDataSequence dataSeq, TIntFloatHashMap scores) {	    if (segmentViterbi==null)	        segmentViterbi = (SegmentViterbi)getViterbi(1);		segmentViterbi.singleSegmentClassScores(dataSeq,lambda,scores); 	}	 public Segmentation[] segmentSequences(CandSegDataSequence dataSeq, int numLabelSeqs) {	     if (segmentViterbi==null)		        segmentViterbi = (SegmentViterbi)getViterbi(numLabelSeqs);	     return segmentViterbi.segmentSequences(dataSeq,lambda,numLabelSeqs);	 }	/*	public void apply(DataSequence dataSeq) {		apply((CandSegDataSequence)dataSeq);	}		public void apply(CandSegDataSequence dataSeq) {	    if (segmentViterbi==null)	        segmentViterbi = new SegmentViterbi(this,1);		if (params.debugLvl > 2) 			Util.printDbg("SegmentCRF: Applying on " + dataSeq);		segmentViterbi.bestLabelSequence(dataSeq,lambda);	}	*/	/*	public double score(DataSequence dataSeq) {	    if (segmentViterbi==null)	        segmentViterbi = new SegmentViterbi(this,1);		return segmentViterbi.viterbiSearch(dataSeq,lambda,true);	}	*/}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -