package hu.ppke.itk.nlpg.purepos.model.internal; import hu.ppke.itk.nlpg.docmodel.IDocument; import hu.ppke.itk.nlpg.docmodel.IToken; import hu.ppke.itk.nlpg.purepos.common.lemma.ILemmaTransformation; import hu.ppke.itk.nlpg.purepos.model.ModelData; import java.util.ArrayList; public class LogLinearMLCombiner extends LogLinearCombiner { private static final long serialVersionUID = 3954363116292749063L; @Override public void calculateParameters(IDocument doc, RawModelData rawModeldata, ModelData<String, Integer> data) { if (lambdas == null || lambdas.size() < 2) { lambdas = new ArrayList<Double>(2); lambdas.add(0.0); lambdas.add(0.1); } } @Override public Double combine(IToken tok, ILemmaTransformation<String, Integer> t, CompiledModelData<String, Integer> compiledModelData, ModelData<String, Integer> modelData) { LemmaUnigramModel<String> unigramLemmaModel = compiledModelData.unigramLemmaModel; Double uniScore = unigramLemmaModel.getLogProb(tok.getStem()); Double suffixScore = smooth(compiledModelData.lemmaGuesser .getTagLogProbability(tok.getToken(), t)); return uniScore * lambdas.get(0) + suffixScore * lambdas.get(1); } }