from PruneChunker import *

prunerMakers = { "inc" : makeIncrementalPruningFunc, "thr" : makeThresholdPruningFunc }
pruneStops   = { "prec" : 1, "recall" : 2, "rules" : 3 }
try:
   RULES_FILE  = sys.argv[1]
   METHOD      = sys.argv[2]
   METHOD_PAR  = int(sys.argv[3])
   UNTIL_WHEN  = pruneStops[sys.argv[4]]
   NUM_FROM    = int(sys.argv[5])
   NUM_TO      = int(sys.argv[6])

   pruningFunc = prunerMakers[METHOD](METHOD_PAR) 
   
except:
   print "Usage: prune.py initialRulesFileName method num untilWhen from to [corpusFile]"
   print
   print "     method is inc (for incremental) or thr (for threshold)"
   print "     num indicates how many rules to dump each time, or the threshold"
   print "     untilWhen can be prec recall or rules. "
   print "        prec: precision drop "
   print "        recall: recall drop  "
   print "        rules: no more rules to prune"
   sys.exit()
   
try:
   CORPUS_FILE = sys.argv[7]
except:
   CORPUS_FILE = "corpus/oneperline.basenps.nps.noasterix.txt"

model = Model(CORPUS_FILE, NUM_FROM, NUM_TO)
rules = doGenRuleSet(model, RULES_FILE, pruningFunc, UNTIL_WHEN)

print
print "Resulting ruleset has:",len(rules),"rules"
print 
print "Results are in data/*.txt.prune"


