/** {@link LGAsk#generateAskFromQuestion(DEPTree, String)}. */ private void setBeVerbForm(DEPNode verb, DEPNode sbj) { if (sbj.isLemma(ENPronoun.YOU)) { if (verb.isPos(CTLibEn.POS_VBD)) verb.form = ENAux.WAS; else if (verb.isPos(CTLibEn.POS_VBP)) { verb.form = ENAux.IS; verb.pos = CTLibEn.POS_VBZ; } } }
private Set<String> getLemmaSet(SRLTree sTree, String pos) { Set<String> set = new HashSet<String>(); DEPNode arg; for (SRLArc arc : sTree.getArguments()) { arg = arc.getNode(); if (arg.isPos(pos)) set.add(arg.lemma); } return set; }
/** {@link LGAsk#generateAskFromQuestion(DEPTree, String)}. */ private void set3rdSingularVerbForm(DEPNode verb, DEPNode sbj) { if (sbj.isLemma(ENPronoun.YOU)) { if (verb.isPos(CTLibEn.POS_VBP)) { verb.form = LGVerbEn.get3rdSingularForm(verb.lemma); verb.pos = CTLibEn.POS_VBZ; } } }
@Override protected String getHardLabel(DEPNode node) { DEPNode dep; if (node.isLemma(ENPrep.AT)) { if ((dep = rm_deps[node.id]) != null && dep.isPos(CTLibEn.POS_NN) && (ENTime.isTemporalSuffix(dep.lemma))) return SRLLib.ARGM_TMP; } return null; }
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); }
@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; }
/** Called by {@link LGAsk#generateQuestionFromAsk(DEPTree, String)}. */ private DEPNode addDoAuxiliary(DEPTree tree, DEPNode verb, DEPNode head) { DEPNode aux; if (verb.isPos(CTLibEn.POS_VBZ)) tree.add(aux = getNode(head, ENAux.DOES, ENAux.DO, verb.pos, DEPLibEn.DEP_AUX, null)); else if (verb.isPos(CTLibEn.POS_VBD) || verb.isPos(CTLibEn.POS_VBN)) tree.add(aux = getNode(head, ENAux.DID , ENAux.DO, CTLibEn.POS_VBD, DEPLibEn.DEP_AUX, null)); else tree.add(aux = getNode(head, ENAux.DO , ENAux.DO, verb.pos, DEPLibEn.DEP_AUX, null)); toNonFinite(verb); return aux; }
private DEPArc getAnyDescendentArcByPOSAux(DEPNode node, String pos) { DEPNode dep; for (DEPArc arc : node.getDependents()) { dep = arc.getNode(); if (dep.isPos(pos)) return arc; arc = getAnyDescendentArcByPOSAux(dep, pos); if (arc != null) return arc; } return null; }
static public String generateSentenceFromImperative(String prefix, DEPTree tree, boolean switchUnI) { tree = tree.clone(); tree.setDependents(); if (switchUnI) LGLibEn.convertUnI(tree); if (prefix.isEmpty()) LGLibEn.convertFirstFormToUpperCase(tree); else LGLibEn.convertFirstFormToLowerCase(tree); StringBuilder build = new StringBuilder(); build.append(prefix); build.append(STConstant.SPACE); build.append(LGLibEn.getForms(tree, false, STConstant.SPACE)); DEPNode last = tree.get(tree.size()-1); if (!last.isPos(CTLibEn.POS_PERIOD)) build.append(STPunct.PERIOD); return build.toString(); } }
/** Called by {@link DEPLibEn#relinkReferent(DEPNode)}. */ static private Pair<DEPNode,SRLArc> getLastPrepositionWithoutDependent(DEPNode verb) { List<DEPArc> arcs = verb.getDependents(); DEPArc arc; SRLArc sHead; DEPNode dep; int i; for (i=arcs.size()-1; i>=0; i--) { arc = arcs.get(i); dep = arc.getNode(); if (dep.id < verb.id) return null; if (dep.isPos(CTLibEn.POS_IN) && (sHead = dep.getSHead(verb)) != null) return dep.getDependents().isEmpty() ? new Pair<DEPNode,SRLArc>(dep, sHead) : null; } return null; }
/** 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); } }
private void addPeriod(DEPTree tree, DEPNode root) { DEPNode last = tree.get(tree.size()-1); if (last.isPos(CTLibEn.POS_PERIOD)) last.form = last.lemma = STPunct.PERIOD; else tree.add(getNode(root, STPunct.PERIOD, STPunct.PERIOD, CTLibEn.POS_PERIOD, DEPLibEn.DEP_PUNCT, null)); }
/** Called by {@link DEPLibEn#relinkReferent(DEPNode)}. */ static private Pair<DEPNode,SRLArc> getFirstRelativizer(DEPNode verb) { SRLArc sHead; DEPNode dep; for (DEPArc arc : verb.getDependents()) { dep = arc.getNode(); if (dep.id > verb.id) return null; if ((sHead = dep.getSHead(verb, SRLLib.P_ARG_REF)) != null) return (dep.isPos(CTLibEn.POS_IN)) ? null : new Pair<DEPNode,SRLArc>(dep, sHead); } return null; }
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 DEPNode getNodeFromSyntacticInfo(DEPNode head, ArgInfo rArg, String delim) { Pair<String,String> p = rArg.popNextSyntacticInfo(); String label = p.o1, lemma = p.o2; DEPNode dep; for (DEPArc arc : head.getDependents()) { dep = arc.getNode(); if (dep.isLemma(lemma) && (arc.isLabel(label) || (label.equals(DEPLibEn.DEP_PREP) && dep.isPos(CTLibEn.POS_IN)))) { if (!rArg.hasSyntacticInfo()) return dep; else return getNodeFromSyntacticInfo(dep, rArg, delim); } } return null; }
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; }
private boolean postParsePP(DEPNode node) { DEPNode head = node.getHead(); if (head == null) return false; DEPNode gHead = head.getHead(); if (gHead == null) return false; DEPNode ggHead = gHead.getHead(); if (ggHead == null) return false; if (node.id < ggHead.id && ggHead.id < gHead.id && gHead.id < head.id && head.isPos(CTLibEn.POS_IN) && MPLibEn.isNoun(gHead.pos) && MPLibEn.isVerb(ggHead.pos)) { head.setHead(ggHead); return true; } return false; }
/** 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)); }
/** 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; } } } }