Example usage for edu.stanford.nlp.semgraph SemanticGraph childPairs

List of usage examples for edu.stanford.nlp.semgraph SemanticGraph childPairs

Introduction

In this page you can find the example usage for edu.stanford.nlp.semgraph SemanticGraph childPairs.

Prototype

public List<Pair<GrammaticalRelation, IndexedWord>> childPairs(IndexedWord vertex) 

Source Link

Document

Returns a list of pairs of a relation name and the child IndexedFeatureLabel that bears that relation.

Usage

From source file:knu.univ.lingvo.coref.Document.java

License:Open Source License

private boolean findSpeaker(int utterNum, int sentNum, List<CoreMap> sentences, int startIndex, int endIndex,
        Dictionaries dict) {//from   w w  w  .j a  v  a 2 s .c  o m
    List<CoreLabel> sent = sentences.get(sentNum).get(CoreAnnotations.TokensAnnotation.class);
    for (int i = startIndex; i < endIndex; i++) {
        if (sent.get(i).get(CoreAnnotations.UtteranceAnnotation.class) != 0)
            continue;
        String lemma = sent.get(i).get(CoreAnnotations.LemmaAnnotation.class);
        String word = sent.get(i).get(CoreAnnotations.TextAnnotation.class);
        if (dict.reportVerb.contains(lemma)) {
            // find subject
            SemanticGraph dependency = sentences.get(sentNum)
                    .get(SemanticGraphCoreAnnotations.CollapsedDependenciesAnnotation.class);
            IndexedWord w = dependency.getNodeByWordPattern(word);

            if (w != null) {
                for (Pair<GrammaticalRelation, IndexedWord> child : dependency.childPairs(w)) {
                    if (child.first().getShortName().equals("nsubj")) {
                        String subjectString = child.second().word();
                        int subjectIndex = child.second().index(); // start from 1
                        IntTuple headPosition = new IntTuple(2);
                        headPosition.set(0, sentNum);
                        headPosition.set(1, subjectIndex - 1);
                        String speaker;
                        if (mentionheadPositions.containsKey(headPosition)) {
                            speaker = Integer.toString(mentionheadPositions.get(headPosition).mentionID);
                        } else {
                            speaker = subjectString;
                        }
                        speakers.put(utterNum, speaker);
                        return true;
                    }
                }
            } else {
                SieveCoreferenceSystem.logger.warning("Cannot find node in dependency for word " + word);
            }
        }
    }
    return false;
}

From source file:knu.univ.lingvo.coref.Document.java

License:Open Source License

private String findNextParagraphSpeaker(List<CoreMap> paragraph, int paragraphOffset, Dictionaries dict) {
    CoreMap lastSent = paragraph.get(paragraph.size() - 1);
    String speaker = "";
    for (CoreLabel w : lastSent.get(CoreAnnotations.TokensAnnotation.class)) {
        if (w.get(CoreAnnotations.LemmaAnnotation.class).equals("report")
                || w.get(CoreAnnotations.LemmaAnnotation.class).equals("say")) {
            String word = w.get(CoreAnnotations.TextAnnotation.class);
            SemanticGraph dependency = lastSent
                    .get(SemanticGraphCoreAnnotations.CollapsedDependenciesAnnotation.class);
            IndexedWord t = dependency.getNodeByWordPattern(word);

            for (Pair<GrammaticalRelation, IndexedWord> child : dependency.childPairs(t)) {
                if (child.first().getShortName().equals("nsubj")) {
                    int subjectIndex = child.second().index(); // start from 1
                    IntTuple headPosition = new IntTuple(2);
                    headPosition.set(0, paragraph.size() - 1 + paragraphOffset);
                    headPosition.set(1, subjectIndex - 1);
                    if (mentionheadPositions.containsKey(headPosition)
                            && mentionheadPositions.get(headPosition).nerString.startsWith("PER")) {
                        speaker = Integer.toString(mentionheadPositions.get(headPosition).mentionID);
                    }/*from   w  w w .j  av  a 2  s  . co  m*/
                }
            }
        }
    }
    return speaker;
}