/** Called by {@link LGAsk#generateQuestionFromAsk(DEPTree, String)}. */ private DEPNode getNode(DEPNode head, String form, String lemma, String pos, String deprel, String label) { DEPNode aux = new DEPNode(0, form, lemma, pos, new DEPFeat()); aux.initXHeads(); aux.initSHeads(); aux.setHead(head, deprel); if (label != null) aux.addSHead(head, label); return aux; }
DEPNode beVerb = lambda.getHead(); String subj = lambda.getLabel(); int vType = 0; if (beta.isPos(CTLibEn.POS_VBN)) vType = 1; else if (beta.isPos(CTLibEn.POS_VBG)) vType = 2; else if (beta.isPos(CTLibEn.POS_VBD)) String p2 = beta.getFeat(DEPLib.FEAT_POS2); if (p2 != null && p2.equals(CTLibEn.POS_VBN)) vType = 1; DEPNode gHead = beVerb.getHead(); if (beVerb.isLemma(ENAux.BE) && beVerb.id < lambda.id && (gHead == null || gHead.id < beVerb.id)) if (node.isDependentOf(beVerb)) node.setHead(beta); beVerb.setHead(beta); beVerb.setLabel(DEPLibEn.DEP_AUXPASS); lambda.setLabel(DEPLibEn.DEP_NSUBJPASS); else if (subj.equals(DEPLibEn.DEP_CSUBJ)) lambda.setLabel(DEPLibEn.DEP_CSUBJPASS); beVerb.setLabel(DEPLibEn.DEP_AUX);
private boolean ancestorHasSHead(DEPNode dNode, DEPNode sHead, String label) { DEPNode dHead = dNode.getHead(); while (dHead != null) { if (dHead.isArgumentOf(sHead, label)) return true; dHead = dHead.getHead(); } return false; }
public boolean isSiblingOf(DEPNode node) { return node.isDependentOf(getHead()); }
static public String getReferentValueOf3rdPronoun(DEPNode node) { String coref = node.getFeat(DEPLibEn.FEAT_COREF); if (coref == null) return null; if (node.isLemma("his") || node.isLemma("hers") || node.isLemma("its") || node.lemma.startsWith("our") || node.lemma.startsWith("your") || node.lemma.startsWith("their")) return getPossessiveForm(coref); if (node.isLemma("he") || node.isLemma("him") || node.isLemma("she") || node.isLemma("it") || node.isLemma("we") || node.isLemma("us") || node.isLemma("they") || node.isLemma("them")) return coref; if (node.isLemma("her")) return node.isPos(CTLibEn.POS_PRPS) ? getPossessiveForm(coref) : coref; return null; }
nNode = new DEPNode(oNode); tree.add(nNode); nNode.id = i; nNode.initXHeads(); nNode.initSHeads(); oHead = oNode.getHead(); nHead = map.get(oHead.id); nNode.addXHead(map.get(oHead.id), xHead.getLabel()); nNode.addSHead(map.get(oHead.id), sHead.getLabel()); nNode.setHead(nHead, oNode.getLabel()); nNode.nament = oNode.nament;
DEPNode head = prep.getHead(); if (MPLibEn.isNoun(head.pos) || head.isPos(CTLibEn.POS_IN) || head.isPos(CTLibEn.POS_RP)) DEPNode gHead = head.getHead(); SRLArc sp, sh; if (gHead != null && (sp = prep.getSHead(gHead)) != null) if ((sh = head.getSHead(gHead)) != null) if (head.isPos(CTLibEn.POS_IN) && sh.isLabel(SRLLib.C_V)) head.setLabel(DEP_PRT); prep.setHead(gHead); prep.removeSHead(sp); head.addSHead(gHead, sp.getLabel());
tree.add(new DEPNode()); tree.get(0).setXHeads(new ArrayList<DEPArc>()); tree.get(0).setXHeads(new ArrayList<DEPArc>()); node.init(id, form, lemma, pos, new DEPFeat(feats)); node.nament = nament; node.setHead(tree.get(Integer.parseInt(tmp[i_headId])), tmp[i_deprel]); node.setXHeads(getXHeads(tree, tmp[i_xheads])); node.setSHeads(getSHeads(tree, tmp[i_sheads])); node.addFeat(DEPLib.FEAT_GPOS, tmp[i_gpos]);
static public DEPTree toDEPTree(List<String> tokens) { DEPTree tree = new DEPTree(); int i, size = tokens.size(); for (i=0; i<size; i++) tree.add(new DEPNode(i+1, tokens.get(i))); return tree; }
regnodes_NN_CONJ_NN[0] = new DEPNode(DEPLib.NULL_ID, ANY_TOKEN); regnodes_NN_CONJ_NN[0].setLabel(DependencyRegex.fromSet(rel_conjunctSet)); regnodes_VBNEG_OBJ[0] = new DEPNode(DEPLib.NULL_ID, fromSet(iv_negVerbsSet)); regnodes_VBNEG_OBJ[1] = new DEPNode(DEPLib.NULL_ID, ANY_TOKEN); regnodes_VBNEG_OBJ[1].setLabel(DEPLibEn.DEP_DOBJ); /* was "OBJ" in clearparser */ int cVBNEG_OBJ = 0; regnodes_PRT_VB_PRD[0] = new DEPNode(DEPLib.NULL_ID, fromSet(iv_negParticlesSet)); regnodes_PRT_VB_PRD[0].setLabel(DEPLibEn.DEP_NEG); // was: ("ADV"); regnodes_PRT_VB_PRD[1] = new DEPNode(DEPLib.NULL_ID, fromSet(iv_copulaSet)); regnodes_PRT_VB_PRD[2] = new DEPNode(DEPLib.NULL_ID, ANY_TOKEN); regnodes_PRT_VB_PRD[2].setLabel(DEPLibEn.DEP_ACOMP); // was: ("PRD"); regnodes_PRT_VB_PRD[2].pos = DependencyRegex.ANY_ADJECTIVE; int cPRT_VB_PRD = 1; regnodes_PRT_MOD_VB_OBJ[0] = new DEPNode(DEPLib.NULL_ID,fromSet(iv_negParticlesSet)); regnodes_PRT_MOD_VB_OBJ[0].setLabel(DEPLibEn.DEP_NEG); // was: ("ADV"); regnodes_PRT_MOD_VB_OBJ[1] = new DEPNode(DEPLib.NULL_ID, fromSet(iv_regVerbsSet)); regnodes_PRT_MOD_VB_OBJ[1].pos = ANY_VERB; regnodes_PRT_MOD_VB_OBJ[2] = new DEPNode(DEPLib.NULL_ID,ANY_TOKEN); regnodes_PRT_MOD_VB_OBJ[2].setLabel(DEPLibEn.DEP_DOBJ); regnodes_PRT_MOD_VB_OBJ_IN_PMOD[0] = new DEPNode(DEPLib.NULL_ID,fromSet(iv_negParticlesSet));
/** Splits certain Stanford dependency labels into finer-grained labels. */ private void splitLabels(DEPTree tree) { int i, size = tree.size(); List<DEPNode> list; DEPNode node; tree.setDependents(); for (i=1; i<size; i++) { node = tree.get(i); if (node.isLabel(DEPLibEn.DEP_ADVMOD)) { if (MPLibEn.RE_NEG.matcher(node.form.toLowerCase()).find()) node.setLabel(DEPLibEn.DEP_NEG); } if (node.containsDependent(DEPLibEn.DEP_AUXPASS)) { for (DEPNode child : node.getDependentsByLabels(DEPLibEn.DEP_CSUBJ, DEPLibEn.DEP_NSUBJ)) child.setLabel(child.getLabel()+DEPLibEn.DEP_PASS); } if ((list = node.getDependentsByLabels(DEPLibEn.DEP_DOBJ)).size() > 1) list.get(0).setLabel(DEPLibEn.DEP_IOBJ); } }
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; } } }
/** Called by {@link LGAsk#generateQuestionFromAsk(DEPTree, String)}. */ private void resetDEPTreePost(DEPTree tree, DEPNode root) { root.setHead(tree.get(0), DEPLibEn.DEP_ROOT); String end = STPunct.QUESTION_MARK; String vtype; if ((vtype = root.getFeat(DEPLib.FEAT_VERB_TYPE)) != null && vtype.equals(NON_FINITE)) { tree.add(1, getNode(root, PLEASE, PLEASE, CTLibEn.POS_UH, DEPLibEn.DEP_INTJ, SRLLib.ARGM_DIS)); end = STPunct.PERIOD; } DEPNode last = root.getLastNode(); if (last.isPos(CTLibEn.POS_PERIOD)) { last.form = end; last.lemma = end; } else tree.add(getNode(root, end, end, CTLibEn.POS_PERIOD, DEPLibEn.DEP_PUNCT, null)); }