package semanticMarkup.ling.learn.knowledge; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; import semanticMarkup.ling.learn.dataholder.DataHolder; import semanticMarkup.ling.learn.dataholder.SentenceStructure; /** * PatternBaseAnnotator Module: Annotate clauses which have some special * patterns. Those patterns are highly reliable indicators for annotating the * clauses. * * @author Dongye * */ public class PatternBasedAnnotator implements IModule { public PatternBasedAnnotator() { } @Override public void run(DataHolder dataholderHandler) { PropertyConfigurator.configure("conf/log4j.properties"); Logger myLogger = Logger.getLogger("learn.markupByPattern"); myLogger.trace("Enter markupByPattern"); int size = dataholderHandler.getSentenceHolder().size(); for (int i = 0; i < size; i++) { boolean flag = markupByPatternHelper(dataholderHandler .getSentenceHolder().get(i)); if (flag) { myLogger.debug("Updated Sentence #" + i); } } myLogger.trace("Quite markupByPattern"); } public boolean markupByPatternHelper(SentenceStructure sentence) { PropertyConfigurator.configure("conf/log4j.properties"); Logger myLogger = Logger.getLogger("markupByPattern"); // case 1 if (sentence.getOriginalSentence().matches("^x=.*")) { myLogger.trace("Case 1"); sentence.setTag("chromosome"); sentence.setModifier(""); return true; } // case 2 else if (sentence.getOriginalSentence().matches("^2n=.*")) { myLogger.trace("Case 2"); sentence.setTag("chromosome"); sentence.setModifier(""); return true; } // case 3 else if (sentence.getOriginalSentence().matches("^x .*")) { myLogger.trace("Case 3"); sentence.setTag("chromosome"); sentence.setModifier(""); return true; } // case 4 else if (sentence.getOriginalSentence().matches("^2n .*")) { myLogger.trace("Case 4"); sentence.setTag("chromosome"); sentence.setModifier(""); return true; } // case 5 else if (sentence.getOriginalSentence().matches("^2 n.*")) { myLogger.trace("Case 5"); sentence.setTag("chromosome"); sentence.setModifier(""); return true; } // case 6 else if (sentence.getOriginalSentence().matches("^fl.*")) { myLogger.trace("Case 6"); sentence.setTag("flowerTime"); sentence.setModifier(""); return true; } // case 7 else if (sentence.getOriginalSentence().matches("^fr.*")) { myLogger.trace("Case 7"); sentence.setTag("fruitTime"); sentence.setModifier(""); return true; } return false; } }