private void addZhaoSupervisedSenseFeats( FeaturizedToken p, FeaturizedToken p1, ArrayList<String> feats) { String feat; // p.lm.pos feat = getFeatureObject(p.getFarLeftChild()).getPos(); feats.add(feat); // p.rm.pos feat = getFeatureObject(p.getFarRightChild()).getPos(); feats.add(feat); // p.lemma feat = p.getLemma(); feats.add(feat); // p.lemma + p.lemma1 feat = p.getLemma() + p1.getLemma(); feats.add(feat); // p.lemma + p.children.dprel.noDup ArrayList<String> depRelChildren = new ArrayList<String>(); ArrayList<FeaturizedToken> pChildren = getFeatureObjectList(p.getChildren()); for (FeaturizedToken child : pChildren) { depRelChildren.add(child.getDeprel()); } feat = buildString(noDup(depRelChildren)); feats.add(feat); // Er...what? Sense given for sense prediction? // p.lemma + p.currentSense }
private void getSecondThirdSupArgFeats( FeaturizedToken pred, FeaturizedToken arg, FeaturizedToken predLast, FeaturizedToken predNext, FeaturizedToken argLast, FeaturizedToken argNext, FeaturizedToken argParent, ArrayList<FeaturizedToken> argChildrenObjectList, ArrayList<String> feats) { FeaturizedToken argLm = getFeatureObject(arg.getFarLeftChild()); FeaturizedToken argRm = getFeatureObject(arg.getFarRightChild()); FeaturizedToken argRn = getFeatureObject(arg.getNearRightChild()); // FeatureObject argLn = getFeatureObject(arg.getNearLeftChild()); String feat; // a.h.lemma feats.add(argParent.getLemma()); // a.lm.dprel + a.form feats.add(argLm.getDeprel() + "_" + arg.getForm()); // a.lm_1.lemma feats.add(getFeatureObject(argLast.getFarLeftChild()).getLemma()); // a.lmn.pos (n=0,1) feats.add(argLm.getPos()); feats.add(getFeatureObject(argNext.getFarLeftChild()).getPos()); // a.noFarChildren.pos.bag + a.rm.form ArrayList<Integer> noFarChildren = arg.getNoFarChildren(); ArrayList<String> noFarChildrenPos = new ArrayList<String>(); for (Integer i : noFarChildren) { noFarChildrenPos.add(getFeatureObject(i).getPos()); } ArrayList<String> argNoFarChildrenBag = bag(noFarChildrenPos); feat = buildString(argNoFarChildrenBag) + argRm.getForm(); feats.add(feat); // a.pphead.lemma feats.add(getFeatureObject(arg.getParent()).getLemma()); // a.rm.dprel + a.form feats.add(argRm.getDeprel() + "_" + arg.getForm()); // a.rm_1.form feats.add(getFeatureObject(argLast.getFarRightChild()).getForm()); // a.rm.lemma feats.add(argRm.getLemma()); // a.rn.dprel + a.form feats.add(argRn.getDeprel() + "_" + arg.getForm()); }
public void addBjorkelundPairFeatures(int pidx, int aidx, ArrayList<String> feats) { /* From Bjorkelund et al, CoNLL 2009. * Prefixes: * Pred: the predicate * PredParent: the parent of the predicate * Arg: the argument * Left: the leftmost dependent of the argument * Right: the rightmost dependent of the argument * LeftSibling: the left sibling of the argument * RightSibling: the right sibling of the argument */ String feat; FeaturizedToken pred = getFeatureObject(pidx); FeaturizedToken arg = getFeatureObject(aidx); FeaturizedTokenPair predArgPair = getFeatureObject(pidx, aidx); FeaturizedToken predParent = getFeatureObject(pred.getParent()); ArrayList<Integer> predChildren = pred.getChildren(); FeaturizedToken argLeftSibling = getFeatureObject(arg.getNearLeftSibling()); FeaturizedToken argRightSibling = getFeatureObject(arg.getNearRightSibling()); FeaturizedToken argLeftDependent = getFeatureObject(arg.getFarLeftChild()); FeaturizedToken argRightDependent = getFeatureObject(arg.getFarRightChild()); // PredWord, PredPOS, PredFeats, PredDeprel addBjorkelundGenericFeatures(pidx, feats, "Pred"); // ArgWord, ArgPOS, ArgFeats, ArgDeprel addBjorkelundGenericFeatures(aidx, feats, "Arg"); // PredParentWord, PredParentPOS, PredParentFeats addBjorkelundPredParentFeatures(predParent, feats); // ChildDepSet, ChildWordSet, ChildPOSSet addBjorkelundPredChildFeatures(predChildren, feats); // LeftWord, LeftPOS, LeftFeats addBjorkelundDependentFeats(argLeftDependent, feats, "Left"); // RightWord, RightPOS, RightFeats addBjorkelundDependentFeats(argRightDependent, feats, "Right"); // LeftSiblingWord, LeftSiblingPOS, LeftSiblingFeats addBjorkelundSiblingFeats(argLeftSibling, feats, "Left"); // RightSiblingWord, RightSiblingPOS, RightSiblingFeats addBjorkelundSiblingFeats(argRightSibling, feats, "Right"); // DeprelPath, POSPath addBjorkelundPathFeats(predArgPair, feats); // Position addBjorkelundPositionFeat(pidx, aidx, feats); // PredLemma feat = pred.getLemma(); feats.add("PredLemma:" + feat); // TODO: Sense: the value of the Pred column, e.g. plan.01. // TODO: DepSubCat: the subcategorization frame of the predicate, e.g. OBJ+OPRD+SUB. }
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); }