Log in Help
Print
Homegatesrcmainhepplepostag 〉 Rule.java
 
/*
 *  Rule.java
 *
 *  Copyright (c) 1995-2012, The University of Sheffield. See the file
 *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
 *
 *  This file is part of GATE (see http://gate.ac.uk/), and is free
 *  software, licenced under the GNU Library General Public License,
 *  Version 2, June 1991 (in the distribution as file licence.html,
 *  and also available at http://gate.ac.uk/gate/licence.html).
 *
 *  HepTag was originally written by Mark Hepple, this version contains
 *  modifications by Valentin Tablan and Niraj Aswani.
 *
 *  $Id: Rule.java 17402 2014-02-22 14:44:43Z markagreenwood $
 */

/**
 * Title:        HepTag
 * Description:  Mark Hepple's POS tagger
 * Copyright:    Copyright (c) 2001
 * Company:      University of Sheffield
 * @author Mark Hepple
 * @version 1.0
 */

package hepple.postag;

import java.util.List;

public abstract class Rule {

  protected String from;
  protected String to;
  protected String ruleId;
  protected String[] context;

  public void initialise(List<String> ruleParts) {
    from = ruleParts.get(0);
    to = ruleParts.get(1);
    ruleId = ruleParts.get(2);
    int contextSize = ruleParts.size() - 3;
    context = new String[contextSize];
    for (int i=0 ; i<contextSize ; i++) context[i] = ruleParts.get(i+3);
  }

  abstract public boolean checkContext(POSTagger tagger);

  public boolean hasToTag(POSTagger tagger) {
    for (int i=0 ; i<tagger.lexBuff[3].length ; i++)
      if (to.equals(tagger.lexBuff[3][i])) return true;
    return false;
  }//public boolean hasToTag(Tagger tagger)

  public boolean apply(POSTagger tagger) {
    if (hasToTag(tagger) && checkContext(tagger)) {
      tagger.tagBuff[3] = to;
      return true;
    }else return false;
  }//public boolean apply(Tagger tagger)

}//public abstract class Rule