Ejemplo n.º 1
0
 // ---------- Meg's Dependency Path features. ----------
 public void addLexicalDependencyPathFeatures(int pidx, int aidx, ArrayList<String> feats) {
   FeaturizedToken predObject = getFeatureObject(pidx);
   FeaturizedToken argObject = getFeatureObject(aidx);
   FeaturizedTokenPair predArgPathObject = getFeatureObject(pidx, aidx);
   List<Pair<Integer, Dir>> dependencyPath = predArgPathObject.getDependencyPath();
   String feat;
   ArrayList<String> depRelPathWord = new ArrayList<String>();
   ArrayList<FeaturizedToken> dependencyPathObjectList = getFeatureObjectList(dependencyPath);
   for (FeaturizedToken t : dependencyPathObjectList) {
     depRelPathWord.add(t.getForm());
   }
   feat = buildString(depRelPathWord);
   feats.add(feat);
   feat = buildString(bag(depRelPathWord));
   feats.add(feat);
 }
Ejemplo n.º 2
0
  public void addZhaoPairFeatures(int pidx, int aidx, ArrayList<String> feats) {
    /* NOTE:  Not sure about they're "Semantic Connection" features.
     * What do they correspond to in CoNLL data?
     * From paper: "This includes semantic head (semhead), left(right) farthest(nearest)
     * semantic child (semlm, semln, semrm, semrn).
     * We say a predicate is its argument's semantic head, and the latter is the former's child.
     * Features related to this type may track the current semantic parsing status."
     * If a semantic predicate is given, then the SRL task is moot... */

    FeaturizedToken pred = getFeatureObject(pidx);
    FeaturizedToken arg = getFeatureObject(aidx);
    FeaturizedTokenPair predArgPair = getFeatureObject(pidx, aidx);
    FeaturizedToken predLast = getFeatureObject(pidx - 1);
    FeaturizedToken predNext = getFeatureObject(pidx + 1);
    // FeatureObject predParent = getFeatureObject(pred.getParent());
    FeaturizedToken argLast = getFeatureObject(aidx - 1);
    FeaturizedToken argNext = getFeatureObject(aidx + 1);
    FeaturizedToken argParent = getFeatureObject(arg.getParent());

    ArrayList<Integer> predChildren = pred.getChildren();
    ArrayList<Integer> argChildren = arg.getChildren();
    List<Pair<Integer, Dir>> dependencyPath = predArgPair.getDependencyPath();

    // Initialize Path structures.
    // List<Pair<Integer, Dir>> dpPathPred = predArgPair.getDpPathPred();
    List<Pair<Integer, Dir>> dpPathArg = predArgPair.getDpPathArg();
    ArrayList<Integer> linePath = predArgPair.getLinePath();

    ArrayList<FeaturizedToken> predChildrenObjectList = getFeatureObjectList(predChildren);
    ArrayList<FeaturizedToken> argChildrenObjectList = getFeatureObjectList(argChildren);
    ArrayList<FeaturizedToken> dependencyPathObjectList = getFeatureObjectList(dependencyPath);
    ArrayList<FeaturizedToken> linePathCoNLL = getFeatureObjectList(linePath);

    // Add the supervised features
    if (prm.withSupervision) {
      addZhaoSupervisedPredFeats(pred, arg, predLast, predNext, predChildrenObjectList, feats);
      addZhaoSupervisedArgFeats(
          pred, arg, predLast, predNext, argLast, argNext, argParent, argChildrenObjectList, feats);
      addZhaoSupervisedCombinedFeats(
          pred, arg, feats, dependencyPathObjectList, linePathCoNLL, dpPathArg);
    }

    // Add the unsupervised features
    addZhaoUnsupervisedPredFeats(pred, predLast, predNext, feats);
    addZhaoUnsupervisedArgFeats(arg, argLast, argNext, argChildrenObjectList, feats);
    addZhaoUnsupervisedCombinedFeats(linePath, linePathCoNLL, feats);
  }
Ejemplo n.º 3
0
 private void addBjorkelundPathFeats(FeaturizedTokenPair predArgPair, ArrayList<String> feats) {
   String feat;
   List<Pair<Integer, Dir>> dependencyPath = predArgPair.getDependencyPath();
   // DeprelPath: the path from predicate to argument concatenating dependency labels with the
   // direction of the edge, e.g. OBJ↑OPRD↓SUB↓.
   ArrayList<String> depRelPath = new ArrayList<String>();
   // POSPath: same as DeprelPath, but dependency labels are exchanged for POS tags, e.g.
   // NN↑NNS↓NNP↓.
   ArrayList<String> posPath = new ArrayList<String>();
   ArrayList<FeaturizedToken> dependencyPathObjectList = getFeatureObjectList(dependencyPath);
   for (int i = 0; i < dependencyPathObjectList.size(); i++) {
     FeaturizedToken t = dependencyPathObjectList.get(i);
     depRelPath.add(t.getDeprel() + ":" + dependencyPath.get(i).get2());
     posPath.add(t.getPos() + ":" + dependencyPath.get(i).get2());
   }
   feat = buildString(depRelPath);
   feats.add("DeprelPath:" + feat);
   feat = buildString(posPath);
   feats.add("PosPath:" + feat);
 }