HOL-master/examples/lassie/sempre/src/edu/stanford/nlp/sempre/freebase/lexicons/normalizers/PrepDropNormalizer.java
package edu.stanford.nlp.sempre.freebase.lexicons.normalizers;

import edu.stanford.nlp.util.ArrayUtils;

import java.util.Set;

/**
 * Deletes the preposition at the end
 *
 * @author jonathanberant
 */
public class PrepDropNormalizer implements EntryNormalizer {

  public static Set<String> prepositions = ArrayUtils.asSet(new String[]{"in", "on", "of", "for", "about", "at", "from", "to", "with"});
  @Override
  public String normalize(String str) {
    String res = stripPrep(str);
    return stripPrep(res);
  }

  public static String stripPrep(String str) {

    String[] tokens = str.split("\\s+");
    if (tokens.length == 1)
      return str;
    if (!prepositions.contains(tokens[tokens.length - 1]))
      return str;
    else {
      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < tokens.length - 1; ++i) {
        sb.append(tokens[i] + " ");
      }
      return sb.toString().trim();
    }
  }
}
