示例#1
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);
  }