public boolean isMainVerb(DEPNode verb) { if (!MPLibEn.isVerb(verb.pos) || verb.isLabel(DEPLibEn.DEP_AUX) || verb.isLabel(DEPLibEn.DEP_AUXPASS) || verb.isLabel(DEPLibEn.DEP_XCOMP) || verb.isLabel(DEPLibEn.DEP_PARTMOD) || verb.isLabel(DEPLibEn.DEP_RCMOD) || verb.isLabel(DEPLibEn.DEP_CONJ) || verb.isLabel(DEPLibEn.DEP_HMOD)) return false; else return true; }
private void stripArgs(DEPNode pred, List<DEPNode> args) { if (args.size() >= 2) { DEPNode fst = args.get(0); DEPNode snd = args.get(1); if (fst.id < pred.id && fst.isLabel(DEPLibEn.P_SBJ) && snd.id > pred.id && snd.getSHead(pred, SRLLib.P_ARG_CONCATENATION) != null) args.remove(fst); } }
static public Deque<DEPNode> getPreviousConjuncts(DEPNode node) { Deque<DEPNode> deque = new ArrayDeque<DEPNode>(); while (node.isLabel(DEPLibEn.DEP_CONJ)) { node = node.getHead(); deque.add(node); } return deque; }
public List<DEPNode> getPreviousDependentsExcluding(Pattern exclude) { List<DEPNode> deps = new ArrayList<DEPNode>(); DEPNode dep; for (DEPArc arc : l_dependents) { dep = arc.getNode(); if (dep.id > id) break; if (!dep.isLabel(exclude)) deps.add(dep); } return deps; }
public List<DEPNode> getNextDependentsExcluding(Pattern exclude) { List<DEPNode> deps = new ArrayList<DEPNode>(); DEPNode dep; for (DEPArc arc : l_dependents) { dep = arc.getNode(); if (dep.id < id) continue; if (!dep.isLabel(exclude)) deps.add(dep); } return deps; }
/** @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; }
@Deprecated private boolean containsLabel(SRLTree qsTree, Set<String> qLabels, Set<String> qPreps, String rLabel, DEPNode rDep, boolean qLocative, boolean qTemporal, boolean qManner) { if (qLabels.contains(rLabel)) return true; if (isLocative(rLabel) && qLocative) return true; if (isTemporal(rLabel) && qTemporal) return true; if ((rDep.isLabel(DEPLibEn.DEP_ACOMP) || rDep.isLabel(DEPLibEn.DEP_ADVMOD)) && qManner) return true; if (rLabel.equals(SRLLib.ARG1) && qLabels.contains(SRLLib.ARG2)) return true; if (rLabel.equals(SRLLib.ARG2) && qLabels.contains(SRLLib.ARG1)) return true; if (rDep.isPos(CTLibEn.POS_IN) && qPreps.contains(rDep.lemma)) return true; return false; }
@Deprecated private String getAnswer(List<SRLArc> arcs, String delim) { StringBuilder build = new StringBuilder(); for (SRLArc arc : arcs) { build.append(delim); build.append(LGLibEn.getForms(arc.getNode(), USE_COREF, delim)); } String s = getAnswerPost(build, delim); SRLArc arc = arcs.get(0); if (arc.getNode().isLabel(DEPLibEn.DEP_AGENT) && s.startsWith("By")) s = s.substring(2).trim(); return s; }
/** Called by {@link LGAsk#generateQuestionFromAsk(DEPTree, String)}. */ private void setRest(DEPTree tree, DEPNode verb, Set<DEPNode> added) { for (DEPNode node : verb.getSubNodeSortedList()) { if (added.contains(node)) continue; else if (node.isDependentOf(verb) && (node.isPos(CTLibEn.POS_TO) || node.isLabel(DEPLibEn.DEP_COMPLM) || node.isLabel(DEPLibEn.DEP_MARK))) continue; else tree.add(node); } }
@Override public void countAccuracy(int[] counts) { int i, las = 0, uas = 0, ls = 0; StringIntPair p; DEPNode node; for (i=1; i<t_size; i++) { node = d_tree.get(i); p = g_heads[i]; if (node.isDependentOf(d_tree.get(p.i))) { uas++; if (node.isLabel(p.s)) las++; } if (node.isLabel(p.s)) ls++; } counts[0] += t_size - 1; counts[1] += las; counts[2] += uas; counts[3] += ls; }
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; } } }
private Pair<String,String> getAnswerStringPost(String answer, String delim, DEPNode fst) { answer = UTString.stripPunctuation(answer); String prep = STConstant.EMPTY; if (fst.isPos(CTLibEn.POS_IN)) { prep = fst.lemma + delim; int len = prep.length(); String sub = answer.substring(0, len).toLowerCase(); if (prep.equals(sub)) { answer = answer.substring(len); if (fst.isLabel(DEPLibEn.DEP_AGENT)) prep = STConstant.EMPTY; } else prep = STConstant.EMPTY; } return new Pair<String,String>(answer.trim(), prep); }
/** Called by {@link EnglishC2DConverter#addDEPHeads(DEPTree, CTTree)} */ private void addXHeadsAux(DEPTree dTree, CTNode cNode, Deque<CTNode> dq, String label) { DEPNode node = getDEPNode(dTree, cNode); DEPNode head; for (CTNode cHead : dq) { head = getDEPNode(dTree, cHead); node.addXHead(head, label); if (label.equals(DEPLibEn.DEP_XSUBJ) && head.isLabel(DEPLibEn.DEP_CCOMP)) head.setLabel(DEPLibEn.DEP_XCOMP); } }
private void matchUserVerb(DEPNode node) { if (node.isLabel(DEPLibEn.P_SBJ)) { DEPNode verb = node.getHead(); if (verb != null && MPLibEn.isVerb(verb.pos)) { DEPNode aux = verb.getFirstDependentByLabel(DEPLibEn.P_AUX); if (aux != null) to3rdNumber(aux); else to3rdNumber(verb); } } }
private void matchYouVerb(DEPNode node) { if (node.isLabel(DEPLibEn.P_SBJ)) { DEPNode verb = node.getHead(); if (verb != null && MPLibEn.isVerb(verb.pos)) { DEPNode aux = verb.getFirstDependentByLabel(DEPLibEn.P_AUX); if (aux != null) to2ndNumber(aux); else to2ndNumber(verb); } } }
public StringIntPair[] getDiff(StringIntPair[] heads) { int i, size = size(); DEPNode node, head; StringIntPair[] diff = new StringIntPair[size]; StringIntPair p; for (i=1; i<size; i++) { node = get(i); head = node.getHead(); p = heads[i]; if (head != null && head.id != p.i && !node.isLabel(p.s)) diff[i] = new StringIntPair(node.getLabel(), head.id); else diff[i] = new StringIntPair(null, DEPLib.NULL_ID); } return diff; }
/** {@link LGAsk#generateAskFromQuestion(DEPTree, String)}. */ private DEPTree generateAskFromQuestionAux(DEPTree tree, DEPNode verb) { LGLibEn.convertFirstFormToLowerCase(tree); DEPNode ref = getReferentArgument(verb); if (ref == null || !ref.isLabel(DEPLibEn.P_SBJ)) relocateAuxiliary(tree, verb); addPrefix(tree, verb, ref); convertYouToUser(tree, verb); addPeriod(tree, verb); tree.resetIDs(); tree.resetDependents(); return tree; }
/** 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; } } } }