package edu.northwestern.at.utils.corpuslinguistics.postagger.hepple;
/* Please see the license information in the header below. */
import java.util.*;
/**
* Rule.java
*
* Copyright (c) 2001-2005, The University of Sheffield.
*
* 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,v 1.1 2005/09/30 14:48:12 ian_roberts Exp $
*/
/**
* Title: HepTag
* Description: Mark Hepple's POS tagger
* Copyright: Copyright (c) 2001
* Company: University of Sheffield
* @author Mark Hepple
* @version 1.0
*/
abstract public class Rule
{
protected boolean debug = false;
protected String from;
protected String to;
protected String ruleId;
protected String[] context;
public void initialise( List ruleParts )
{
from = (String)ruleParts.get( 0 );
to = (String)ruleParts.get( 1 );
ruleId = (String)ruleParts.get( 2 );
int contextSize = ruleParts.size() - 3;
context = new String[ contextSize ];
for ( int i = 0 ; i < contextSize ; i++ )
{
context[ i ] = (String)ruleParts.get( i + 3 );
}
}
abstract public boolean checkContext( HeppleTagger tagger );
public boolean hasToTag( HeppleTagger tagger )
{
boolean result = false;
for ( int i = 0 ; i < tagger.lexBuff[ 3 ].length ; i++ )
{
if ( to.equals( tagger.lexBuff[ 3 ][ i ] ) )
{
result = true;
break;
}
}
return result;
}
public boolean apply( HeppleTagger tagger )
{
if ( hasToTag( tagger ) && checkContext( tagger ) )
{
tagger.tagBuff[ 3 ] = to;
tagger.incrementRuleCorrections();
return true;
}
else return false;
}
}