protected void addPhraseToIndex( WordAlignment sent, int f1, int f2, int e1, int e2, boolean isConsistent, float weight) { if (onlyTightPhrases) { if (sent.f2e(f1).isEmpty() || sent.f2e(f2).isEmpty() || sent.e2f(e1).isEmpty() || sent.e2f(e2).isEmpty()) return; } if (ignore(sent, f1, f2, e1, e2)) return; // Check if alTemp meets length requirements: if (f2 - f1 >= maxExtractedPhraseLenF || e2 - e1 >= maxExtractedPhraseLenE) { if (isConsistent) { alGrid.addAlTemp(f1, f2, e1, e2); } if (DETAILED_DEBUG) System.err.printf("skipping too long: %d %d\n", f2 - f1 + 1, e2 - e1 + 1); return; } // Create alTemp: AlignmentTemplateInstance alTemp; alTemp = new AlignmentTemplateInstance(sent, f1, f2, e1, e2, weight); alGrid.addAlTemp(alTemp, isConsistent); alTemps.addToIndex(alTemp); alTemps.incrementAlignmentCount(alTemp); }
@SuppressWarnings("unused") private static boolean checkAlignmentConsistency( WordAlignment sent, int f1, int f2, int e1, int e2) { boolean aligned = false; if (f2 - f1 > maxPhraseLenF) return false; if (e2 - e1 > maxPhraseLenE) return false; for (int fi = f1; fi <= f2; ++fi) for (int ei : sent.f2e(fi)) { if (!(e1 <= ei && ei <= e2)) return false; aligned = true; } if (!aligned) return false; for (int ei = e1; ei <= e2; ++ei) for (int fi : sent.e2f(ei)) if (!(f1 <= fi && fi <= f2)) return false; return true; }