@Override public Object next() { final PhraseTableEntry next = baseIter.next(); Feature[] scores = next.getFeatures(); //for (TranslationRanker ranker : rankers) { // double factor = ranker.score(next, entity); // scores = rescore(scores, factor, ranker.getName()); // } return new PhraseTableEntryImpl(next.getForeign(), next.getTranslation(), scores,entity); }
@Override public double score(PhraseTableEntry entry, Entity entity) { if (!srcLabels.containsKey(entity)) { return 0; } assert (trgLabels.containsKey(entity)); final String srcLabel = entry.getForeign().asString(); final String trgLabel = entry.getTranslation().asString(); SRC_CHECK: { for (String srcCandidate : srcLabels.get(entity)) { if (srcLabel.contains(srcCandidate)) { break SRC_CHECK; } } return 0; } for (String trgCandidate : trgLabels.get(entity)) { if (trgLabel.contains(trgCandidate)) { return 1; } } return 0; }
@Override public double score(PhraseTableEntry entry, Entity entity) { String candidate = entry.getTranslation().asString(); String srcString = null; if(ontoDoc!=null) srcString = ontoDoc; if(nearByTermsAsContext) srcString = entity.toString() ; if(onlyChunkAsContext) srcString = entry.getForeign().asString(); if(sourceLabelAsContext) srcString = entity.toString(); if(srcString.equalsIgnoreCase(ontoDoc)) return clesa.scoreAgainstVector(new Pair<String, Language>(candidate, trgLang), ontoVector); else return clesa.score(new Pair<String, Language>(candidate, trgLang), new Pair<String, Language>(srcString, srcLang)); }
private IntArrayTranslationOption convert(PhraseTableEntry pte) { Sequence<IString> foreignSequence = new SimpleSequence<IString>(IStrings.toIStringArray(getTokens(pte.getForeign()))); Sequence<IString> translationSequence = new SimpleSequence<IString>(IStrings.toIStringArray(getTokens(pte.getTranslation()))); float[] scores = new float[scoreNames.size()]; if(scores.length != scoreNames.size()) { Messages.warning("Number of elements in phrase table not equal to feature name count"); } for (int i = 0; i < scores.length; i++) { if(i < scoreNames.size() && pte.getFeatures()[i].name.equals(scoreNames.get(i))) { scores[i] = (float) pte.getFeatures()[i].score; } else { for(int j = 0; j < scoreNames.size(); j++) { if(pte.getFeatures()[i].name.equals(scoreNames.get(j))) { scores[j] = (float) pte.getFeatures()[i].score; } } } } PhraseAlignment alignment = null; if (pte instanceof AlignedPhraseTableEntry && ((AlignedPhraseTableEntry) pte).getAlignments() instanceof PhraseAlignment) { alignment = (PhraseAlignment) ((AlignedPhraseTableEntry) pte).getAlignments(); } return convert(foreignSequence, translationSequence, alignment, scores); }
private PhraseTableEntry concatPhraseTableEntries(PhraseTableEntry e1, PhraseTableEntry e2, String srcLabel) { // sum values of features double[] newScores = new double[e1.getFeatures().length]; Feature[] f1 = e1.getFeatures(); Feature[] f2 = e2.getFeatures(); for (int i = 0; i < e1.getFeatures().length; i++) { newScores[i] = f1[i].score + f2[i].score; } Feature[] newFeatures = toFeatures(newScores); // combine foreign and translation labels //Label newForeign = new StringLabel(e1.getForeign().asString() + "" + e2.getForeign().asString(), srcLang); Label newTranslation = new StringLabel(e1.getTranslation().asString() + " " + e2.getTranslation().asString(), trgLang); return new PhraseTableEntryImpl(new StringLabel(srcLabel, srcLang), newTranslation, newFeatures, null); }
trg = convertPhrase(FairlyGoodTokenizer.split(pte.getTranslation().asString()), trgDict); final double[] wts = convertWeights(pte.getFeatures(), featureNames); final PhraseTranslation translation = new PhraseTranslation(trg.p, wts);