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

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

Introduction

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

Prototype

public IndexedWord getNodeByWordPattern(String pattern) 

Source Link

Document

Returns the first edu.stanford.nlp.ling.IndexedWord IndexedWord in this SemanticGraph having the given word or regex, or return null if no such found.

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) {/*  w  ww.  jav a2  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);
                    }/*www  .j  av a  2  s . c  o m*/
                }
            }
        }
    }
    return speaker;
}