private void addZhaoSupervisedCombinedFeats( FeaturizedToken pred, FeaturizedToken arg, ArrayList<String> feats, ArrayList<FeaturizedToken> dependencyPathObjectList, ArrayList<FeaturizedToken> linePathCoNLL, List<Pair<Integer, Dir>> dpPathArg) { // ------- Combined features (supervised) ------- String feat; // a.lemma + p.lemma feat = arg.getLemma() + "_" + pred.getLemma(); feats.add(feat); // (a:p|dpPath.dprel) + p.FEAT1 // a:p|dpPath.lemma.seq // a:p|dpPath.lemma.bag ArrayList<String> depRelPath = new ArrayList<String>(); ArrayList<String> depRelPathLemma = new ArrayList<String>(); for (FeaturizedToken t : dependencyPathObjectList) { depRelPath.add(t.getDeprel()); depRelPathLemma.add(t.getLemma()); } feat = buildString(depRelPath) + pred.getFeat6().get(0); feats.add(feat); feat = buildString(depRelPathLemma); feats.add(feat); ArrayList<String> depRelPathLemmaBag = bag(depRelPathLemma); feat = buildString(depRelPathLemmaBag); feats.add(feat); // a:p|linePath.FEAT1.bag // a:p|linePath.lemma.seq // a:p|linePath.dprel.seq ArrayList<String> linePathFeat = new ArrayList<String>(); ArrayList<String> linePathLemma = new ArrayList<String>(); ArrayList<String> linePathDeprel = new ArrayList<String>(); for (FeaturizedToken t : linePathCoNLL) { linePathFeat.add(t.getFeat6().get(0)); linePathLemma.add(t.getLemma()); linePathDeprel.add(t.getDeprel()); } ArrayList<String> linePathFeatBag = bag(linePathFeat); feat = buildString(linePathFeatBag); feats.add(feat); feat = buildString(linePathLemma); feats.add(feat); feat = buildString(linePathDeprel); feats.add(feat); ArrayList<String> dpPathLemma = new ArrayList<String>(); for (Pair<Integer, Dir> dpP : dpPathArg) { dpPathLemma.add(getFeatureObject(dpP.get1()).getLemma()); } // a:p|dpPathArgu.lemma.seq feat = buildString(dpPathLemma); feats.add(feat); // a:p|dpPathArgu.lemma.bag feat = buildString(bag(dpPathLemma)); feats.add(feat); }
private void getFirstThirdSupArgFeats( FeaturizedToken pred, FeaturizedToken arg, FeaturizedToken predLast, FeaturizedToken predNext, FeaturizedToken argLast, FeaturizedToken argNext, FeaturizedToken argParent, ArrayList<FeaturizedToken> argChildrenObjectList, ArrayList<String> feats) { String feat; List<String> argFeats = arg.getFeat6(); String a1; String a2; String a3; String a4; String a5; String a6; a1 = argFeats.get(0); a2 = argFeats.get(1); a3 = argFeats.get(2); a4 = argFeats.get(3); a5 = argFeats.get(4); a6 = argFeats.get(5); List<String> argLastFeats = argLast.getFeat6(); // String last_a1 = argLastFeats.get(0); String last_a2 = argLastFeats.get(1); List<String> argNextFeats = argNext.getFeat6(); // String next_a1 = argNextFeats.get(0); // String next_a2 = argNextFeats.get(1); String next_a3 = argNextFeats.get(2); // a.FEAT1 + a.FEAT3 + a.FEAT4 + a.FEAT5 + a.FEAT6 feat = a1 + "_" + a3 + "_" + a4 + "_" + a5 + "_" + a6; feats.add(feat); // a_1.FEAT2 + a.FEAT2 feat = last_a2 + "_" + a2; feats.add(feat); // a.FEAT3 + a1.FEAT3 feat = a3 + "_" + next_a3; feats.add(feat); // a.FEAT3 + a.h.FEAT3 feat = argParent.getFeat6().get(2); feats.add(feat); // a.children.FEAT1.noDup ArrayList<String> argChildrenFeat1 = getChildrenFeat1(argChildrenObjectList); ArrayList<String> argChildrenFeat1NoDup = noDup(argChildrenFeat1); feat = buildString(argChildrenFeat1NoDup); feats.add(feat); // a.children.FEAT3.bag ArrayList<String> argChildrenFeat3 = getChildrenFeat3(argChildrenObjectList); ArrayList<String> argChildrenFeat3Bag = bag(argChildrenFeat3); feat = buildString(argChildrenFeat3Bag); feats.add(feat); }
private ArrayList<String> getChildrenFeat1(ArrayList<FeaturizedToken> childrenObjectList) { ArrayList<String> childrenFeat1 = new ArrayList<String>(); for (FeaturizedToken child : childrenObjectList) { childrenFeat1.add(child.getFeat6().get(0)); } return childrenFeat1; }
private void addZhaoSupervisedPredFeats( FeaturizedToken pred, FeaturizedToken arg, FeaturizedToken predLast, FeaturizedToken predNext, ArrayList<FeaturizedToken> predChildrenObjectList, ArrayList<String> feats) { // ------- Predicate features (supervised) ------- // NOTE: We cannot include these features in our model since they would have // to use the gold predicate sense. // // // p.currentSense + p.lemma // feats.add(pred.getSense() + "_" + pred.getLemma()); // // p.currentSense + p.pos // feats.add(pred.getSense() + "_" + pred.getPos()); // // p.currentSense + a.pos // feats.add(pred.getSense() + "_" + arg.getPos()); // p_1.FEAT1 feats.add(predLast.getFeat6().get(0)); // p.FEAT2 feats.add(pred.getFeat6().get(1)); // p1.FEAT3 feats.add(predNext.getFeat6().get(2)); // NOTE: This is supposed to be p.semrm.semdprel What is this? // I'm not sure. Here's just a guess. feats.add(getFeatureObject(pred.getFarRightChild()).getDeprel()); // p.lm.dprel feats.add(getFeatureObject(pred.getFarLeftChild()).getDeprel()); // p.form + p.children.dprel.bag ArrayList<String> predChildrenDeprel = new ArrayList<String>(); for (FeaturizedToken child : predChildrenObjectList) { predChildrenDeprel.add(child.getDeprel()); } String bagDepPredChildren = buildString(bag(predChildrenDeprel)); feats.add(pred.getForm() + "_" + bagDepPredChildren); // p.lemma_n (n = -1, 0) feats.add(predLast.getLemma()); feats.add(pred.getLemma()); // p.lemma + p.lemma1 feats.add(pred.getLemma() + "_" + predNext.getLemma()); // p.pos + p.children.dprel.bag feats.add(pred.getPos() + "_" + bagDepPredChildren); }