public boolean setParams(Properties props) {
		// TODO Consider having it fall back to defaults for missing props

		// Look up each property
		SEGMENTER_NAME = props.getProperty(SEGMENTER_PROP);
		STRESS_SENSITIVE_LOOKUP = new Boolean(props.getProperty(STRESS_SENSITIVE_PROP));
		USE_TRUST = new Boolean(props.getProperty(TRUST_PROP));
		LONGEST = new Boolean(props.getProperty(LONGEST_PROP));
		DROP_STRESS = new Boolean(props.getProperty(DROP_STRESS_PROP));
		USE_STRESS = new Boolean(props.getProperty(USE_STRESS_PROP));
		USE_PROB_MEM = new Boolean(props.getProperty(PROB_MEM_PROP));
		BEAM_SIZE = new Integer(props.getProperty(BEAM_SIZE_PROP));
		PROB_AMOUNT = new Double(props.getProperty(PROB_MEM_AMOUNT_PROP));
		DECAY_AMOUNT = new Double(props.getProperty(DECAY_AMT_PROP));
		LEX_TRACE = new Boolean(props.getProperty(LEX_TRACE_PROP));
		SEG_TRACE = new Boolean(props.getProperty(SEG_TRACE_PROP));
		SEG_EVAL_TRACE = new Boolean(props.getProperty(SEG_EVAL_LOG_PROP));
		LEX_EVAL_TRACE = new Boolean(props.getProperty(LEX_EVAL_LOG_PROP));
		RANDOM_SEG_THRESHOLD = new Double(props.getProperty(RANDOM_SEG_THRESHOLD_PROP));
		NORMALIZATION = new Boolean(props.getProperty(NORMALIZATION_PROP));
		RANDOMIZATION = new Boolean(props.getProperty(RANDOMIZATION_PROP));
		USE_SUBSEQ_DISCOUNT = new Boolean(props.getProperty(SUBSEQDISCOUNT_PROP));

		// Set up the output path
		outputBase += "_" + SEGMENTER_NAME;
		if (SEGMENTER_NAME.equals(SEGMENTER_BEAM_SUBTRACTIVE)) outputBase += "_" + BEAM_SIZE;
		if (USE_STRESS) outputBase += "_stress"; else outputBase += "_nostress";
		if (USE_PROB_MEM) outputBase += "_probmem"; else outputBase += "_perfectmem";
		if (USE_TRUST) outputBase += "_trust"; else outputBase += "_notrust";
		if (USE_STRESS && DROP_STRESS) outputBase += "reduced";

		return true;
	}