All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.nlp.parser.common.ParserUtils Maven / Gradle / Ivy

package edu.stanford.nlp.parser.common;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import edu.stanford.nlp.ling.HasTag;
import edu.stanford.nlp.ling.HasWord;
import edu.stanford.nlp.trees.LabeledScoredTreeFactory;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.trees.TreeFactory;


/**
 * Factor out some useful methods more than lexparser module may want.
 */
public class ParserUtils {

  private ParserUtils() {} // static methods

  /**
   * Construct a fall through tree in case we can't parse this sentence.
   *
   * @param words Words of the sentence that didn't parse
   * @return A tree with X for all the internal nodes.
   *     Preterminals have the right tag if the words are tagged.
   */
  public static Tree xTree(List words) {
    TreeFactory treeFactory = new LabeledScoredTreeFactory();
    List lst2 = new ArrayList<>();
    for (HasWord obj : words) {
      String s = obj.word();
      Tree t = treeFactory.newLeaf(s);
      String tag = "XX";
      if (obj instanceof HasTag) {
        if (((HasTag) obj).tag() != null) {
          tag = ((HasTag) obj).tag();
        }
      }
      Tree t2 = treeFactory.newTreeNode(tag, Collections.singletonList(t));
      lst2.add(t2);
    }
    return treeFactory.newTreeNode("X", lst2);
  }

  public static void printOutOfMemory(PrintWriter pw) {
    pw.println();
    pw.println("*******************************************************");
    pw.println("***  WARNING!! OUT OF MEMORY! THERE WAS NOT ENOUGH  ***");
    pw.println("***  MEMORY TO RUN ALL PARSERS.  EITHER GIVE THE    ***");
    pw.println("***  JVM MORE MEMORY, SET THE MAXIMUM SENTENCE      ***");
    pw.println("***  LENGTH WITH -maxLength, OR PERHAPS YOU ARE     ***");
    pw.println("***  HAPPY TO HAVE THE PARSER FALL BACK TO USING    ***");
    pw.println("***  A SIMPLER PARSER FOR VERY LONG SENTENCES.      ***");
    pw.println("*******************************************************");
    pw.println();
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy