static public boolean containsRelativizer(DEPNode arg) { DEPNode dep; for (DEPArc arc : arg.getDependents()) { dep = arc.getNode(); if (dep.pos.startsWith("W") || (!MPLibEn.isVerb(dep.pos) && containsRelativizer(dep))) return true; } return false; }
/** Called by {@link DEPLibEn#postLabel(DEPTree)}. */ static private boolean relinkReferent(DEPNode verb) { Pair<DEPNode,SRLArc> c = getFirstRelativizer(verb); if (c == null) return false; Pair<DEPNode,SRLArc> p = getLastPrepositionWithoutDependent(verb); if (p == null) return false; DEPNode comp = c.o1; comp.setHead(p.o1, DEP_POBJ); comp.removeSHead(c.o2); SRLLib.toReferentArgument(p.o2); return true; }
static public Deque<DEPNode> getNextConjuncts(DEPNode node) { Deque<DEPNode> deque = new ArrayDeque<DEPNode>(); getNextConjunctsAux(node, deque); return deque; }
/** @return a relativizer node in the subtree of the specific node; otherwise, {@code null}. */ static public DEPNode getRefDependentNode(DEPNode head) { if (isCommonRelativizer(head)) return head; DEPNode dep, ref; for (DEPArc arc : head.getDependents()) { dep = arc.getNode(); if (!MPLibEn.isVerb(dep.pos) && !dep.isLabel(DEP_RCMOD) && !dep.isLabel(DEP_CCOMP) && !dep.isLabel(DEP_XCOMP) && !dep.isLabel(DEP_DEP) && !dep.isLabel(DEP_CONJ)) { ref = getRefDependentNode(dep); if (ref != null) return ref; } } return null; }
/** Called by {@link DEPLibEn#postLabel(DEPTree)}. */ static private void labelReferentOfRelativeClause(DEPNode verb, List<DEPArc> argList) { DEPNode top = getTopVerbChain(verb); DEPNode head = top.getHead(); if (top.isLabel(DEPLibEn.DEP_RCMOD) && !head.containsSHead(verb)) { for (DEPArc arc : argList) { if (arc.isLabel(SRLLib.P_ARG_REF) && isReferentArgument(arc.getNode())) { head.addSHead(verb, SRLLib.getBaseLabel(arc.getLabel())); return; } } } }
DEPArc sArc; conjuncts = DEPLibEn.getPreviousConjuncts(pred); conjuncts = DEPLibEn.getNextConjuncts(pred);
@Override protected boolean isNotHead(DEPNode node) { String label = node.getLabel(); return label != null && DEPLibEn.isAuxiliary(label); }
/** Called by {@link DEPLibEn#postLabel(DEPTree)}. */ static private void relabelPrepositionWithReferent(DEPNode verb) { DEPNode dep, pobj; SRLArc sHead; for (DEPArc arc : verb.getDependents()) { dep = arc.getNode(); if (dep.isPos(CTLibEn.POS_IN) && (sHead = dep.getSHead(verb)) != null && !sHead.isLabel(SRLLib.P_ARG_REF)) { pobj = dep.getFirstDependentByLabel(DEPLibEn.DEP_POBJ); if (pobj != null && getRefDependentNode(pobj) != null) { SRLLib.toReferentArgument(sHead); break; } } } }
private void resetVerbPOSTag(DEPNode head, DEPNode dep) { String p2 = head.getFeat(DEPLib.FEAT_POS2); if (p2 != null && (MPLibEn.isNoun(head.pos) || head.isPos(CTLibEn.POS_IN)) && ((MPLibEn.isVerb(p2) || p2.equals(CTLibEn.POS_UH)))) { if (dep.isLabel(DEPLibEn.DEP_DOBJ) || DEPLibEn.isAuxiliary(dep.getLabel()) || dep.isLabel(DEPLibEn.DEP_PRT) || dep.isLabel(DEPLibEn.DEP_ACOMP))// || DEPLibEn.isSubject(dep.getLabel()) || dep.equals(DEPLibEn.DEP_EXPL)) || dep.isLabel(DEPLibEn.DEP_AGENT) || dep.isLabel(DEPLibEn.DEP_ATTR) || dep.isLabel(DEPLibEn.DEP_IOBJ))) { if (p2.equals(CTLibEn.POS_UH)) head.addFeat(DEPLib.FEAT_POS2, CTLibEn.POS_VB); n_2ndPos[head.id] += 1d; } } }
rel = DEPLibEn.getRefDependentNode(dep);
/** {@link LGAsk#generateAskFromQuestion(DEPTree, String)}. */ private void addPrefix(DEPTree tree, DEPNode verb, DEPNode ref) { DEPNode ask = getNode(tree.get(0), "Ask", "ask", CTLibEn.POS_VB, DEPLibEn.DEP_ROOT, null); verb.setHead(ask); tree.add(1, ask); if (ref == null && !hasRelativizer(tree) && !DEPLibEn.containsRelativizer(verb)) { DEPNode complm = getNode(verb, "whether", "whether", CTLibEn.POS_IN, DEPLibEn.DEP_COMPLM, null); tree.add(2, complm); } }
static private void getNextConjunctsAux(DEPNode node, Deque<DEPNode> deque) { for (DEPNode dep : node.getDependentsByLabels(DEPLibEn.DEP_CONJ)) { deque.add(dep); getNextConjunctsAux(dep, deque); } }