private Machine getLatin3AbbreviationMachine()

in ctakes-drug-ner/src/main/java/org/apache/ctakes/drugner/fsm/machines/util/SuffixFrequencyFSM.java [247:513]


	private Machine getLatin3AbbreviationMachine() {
		State startState = new NamedState("START");
		State endState = new NamedState("END");
		endState.setEndStateFlag(true);

		Machine m = new Machine(startState);

		State leftAbbreviateQState = new NamedState("LEFT_Q");
		State leftAbbreviateBState = new NamedState("LEFT_B");
		State leftAbbreviatePState = new NamedState("LEFT_P");
		State leftAbbreviateTState = new NamedState("LEFT_T");

		State middleAbbreviateQtoAState = new NamedState("MID_Q2A");
		State middleAbbreviateQtoDState = new NamedState("MID_Q2D");
		State middleAbbreviateQtoHState = new NamedState("MID_Q2H");
		State middleAbbreviateQtoIState = new NamedState("MID_Q2I");
		State middleAbbreviateQtoMState = new NamedState("MID_Q2M");
		State middleAbbreviateQtoOState = new NamedState("MID_Q2O");
		State middleAbbreviateQtoWState = new NamedState("MID_Q2W");
		State middleAbbreviateQtoPState = new NamedState("MID_Q2P");

		State middleAbbreviatePtoRState = new NamedState("MID_P2R");
		State middleAbbreviateTtoIState = new NamedState("MID_T2I");

		State middleAbbreviateBtoIState = new NamedState("MID_B2I");

		State rightAbbreviateQIDState = new NamedState("RIGHT_QID");
		State rightAbbreviateQADState = new NamedState("RIGHT_QAD");
		State rightAbbreviateQDSState = new NamedState("RIGHT_QDS");
		State rightAbbreviateQHSState = new NamedState("RIGHT_QHS");
		State rightAbbreviateQWKState = new NamedState("RIGHT_QWK");
		State rightAbbreviateQODState = new NamedState("RIGHT_QOD");
		State rightAbbreviateQAMState = new NamedState("RIGHT_QAM");
		State rightAbbreviateQPMState = new NamedState("RIGHT_QPM");
		State rightAbbreviateQMTState = new NamedState("RIGHT_QMT");
		State rightAbbreviateBIDState = new NamedState("RIGHT_BID");
		State rightAbbreviatePRNState = new NamedState("RIGHT_PRN");
		State rightAbbreviateTIDState = new NamedState("RIGHT_TID");

		State firstDotQState = new NamedState("FIRSTDOTQ");
		State firstDotBState = new NamedState("FIRSTDOTB");
		State firstDotPState = new NamedState("FIRSTDOTP");
		State firstDotTState = new NamedState("FIRSTDOTT");

		State secondDotQtoAState = new NamedState("SECONDDOTQ2A");
		State secondDotQtoDState = new NamedState("SECONDDOTQ2D");
		State secondDotQtoHState = new NamedState("SECONDDOTQ2H");
		State secondDotQtoIState = new NamedState("SECONDDOTQ2I");
		State secondDotQtoMState = new NamedState("SECONDDOTQ2M");
		State secondDotQtoOState = new NamedState("SECONDDOTQ2O");
		State secondDotQtoWState = new NamedState("SECONDDOTQ2W");
		State secondDotQtoPState = new NamedState("SECONDDOTQ2P");
		State secondDotBtoIState = new NamedState("SECONDDOTB2I");
		State secondDotPtoRState = new NamedState("SECONDDOTP2R");
		State secondDotTtoIState = new NamedState("SECONDDOTT2I");

		Condition firstDotConditionQ = new PunctuationValueCondition('.');
		Condition firstDotConditionB = new PunctuationValueCondition('.');
		Condition firstDotConditionP = new PunctuationValueCondition('.');
		Condition firstDotConditionT = new PunctuationValueCondition('.');
		Condition secondDotConditionQH = new PunctuationValueCondition('.');
		Condition secondDotConditionQI = new PunctuationValueCondition('.');
		Condition secondDotConditionQA = new PunctuationValueCondition('.');
		Condition secondDotConditionQD = new PunctuationValueCondition('.');
		Condition secondDotConditionQM = new PunctuationValueCondition('.');
		Condition secondDotConditionQO = new PunctuationValueCondition('.');
		Condition secondDotConditionQW = new PunctuationValueCondition('.');
		Condition secondDotConditionQP = new PunctuationValueCondition('.');
		Condition secondDotConditionBI = new PunctuationValueCondition('.');
		Condition secondDotConditionPR = new PunctuationValueCondition('.');
		Condition secondDotConditionTI = new PunctuationValueCondition('.');
		Condition thirdDotConditionQHS = new PunctuationValueCondition('.');
		Condition thirdDotConditionQAD = new PunctuationValueCondition('.');
		Condition thirdDotConditionQID = new PunctuationValueCondition('.');
		Condition thirdDotConditionQDS = new PunctuationValueCondition('.');
		Condition thirdDotConditionQMT = new PunctuationValueCondition('.');
		Condition thirdDotConditionQOD = new PunctuationValueCondition('.');
		Condition thirdDotConditionQWK = new PunctuationValueCondition('.');
		Condition thirdDotConditionQAM = new PunctuationValueCondition('.');
		Condition thirdDotConditionQPM = new PunctuationValueCondition('.');
		Condition thirdDotConditionBID = new PunctuationValueCondition('.');
		Condition thirdDotConditionPRN = new PunctuationValueCondition('.');
		Condition thirdDotConditionTID = new PunctuationValueCondition('.');

		startState.addTransition(new TextValueCondition("q", true),
				leftAbbreviateQState);
		startState.addTransition(new TextValueCondition("b", true),
				leftAbbreviateBState);
		startState.addTransition(new TextValueCondition("p", true),
				leftAbbreviatePState);
		startState.addTransition(new TextValueCondition("t", true),
				leftAbbreviateTState);
		startState.addTransition(new AnyCondition(), startState);

		leftAbbreviateQState.addTransition(firstDotConditionQ, firstDotQState);
		leftAbbreviateQState.addTransition(new AnyCondition(), startState);

		firstDotQState.addTransition(new TextValueCondition("a", true),
				middleAbbreviateQtoAState);
		firstDotQState.addTransition(new TextValueCondition("d", true),
				middleAbbreviateQtoDState);
		firstDotQState.addTransition(new TextValueCondition("h", true),
				middleAbbreviateQtoHState);
		firstDotQState.addTransition(new TextValueCondition("i", true),
				middleAbbreviateQtoIState);
		firstDotQState.addTransition(new TextValueCondition("m", true),
				middleAbbreviateQtoMState);
		firstDotQState.addTransition(new TextValueCondition("o", true),
				middleAbbreviateQtoOState);
		firstDotQState.addTransition(new TextValueCondition("w", true),
				middleAbbreviateQtoWState);
		firstDotQState.addTransition(new TextValueCondition("p", true),
				middleAbbreviateQtoPState);
		firstDotQState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoAState.addTransition(secondDotConditionQA,
				secondDotQtoAState);
		middleAbbreviateQtoAState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoDState.addTransition(secondDotConditionQD,
				secondDotQtoDState);
		middleAbbreviateQtoDState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoHState.addTransition(secondDotConditionQH,
				secondDotQtoHState);
		middleAbbreviateQtoHState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoIState.addTransition(secondDotConditionQI,
				secondDotQtoIState);
		middleAbbreviateQtoIState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoMState.addTransition(secondDotConditionQM,
				secondDotQtoMState);
		middleAbbreviateQtoMState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoOState.addTransition(secondDotConditionQO,
				secondDotQtoOState);
		middleAbbreviateQtoOState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoWState.addTransition(secondDotConditionQW,
				secondDotQtoWState);
		middleAbbreviateQtoWState.addTransition(new AnyCondition(), startState);

		middleAbbreviateQtoPState.addTransition(secondDotConditionQP,
				secondDotQtoPState);
		middleAbbreviateQtoPState.addTransition(new AnyCondition(), startState);

		secondDotQtoAState.addTransition(new TextValueCondition("d", true),
				rightAbbreviateQADState);
		secondDotQtoAState.addTransition(new AnyCondition(), startState);

		secondDotQtoDState.addTransition(new TextValueCondition("s", true),
				rightAbbreviateQDSState);
		secondDotQtoDState.addTransition(new AnyCondition(), startState);

		secondDotQtoHState.addTransition(new TextValueCondition("s", true),
				rightAbbreviateQHSState);
		secondDotQtoHState.addTransition(new AnyCondition(), startState);

		secondDotQtoIState.addTransition(new TextValueCondition("d", true),
				rightAbbreviateQIDState);
		secondDotQtoIState.addTransition(new AnyCondition(), startState);

		secondDotQtoMState.addTransition(new TextValueCondition("t", true),
				rightAbbreviateQMTState);
		secondDotQtoMState.addTransition(new AnyCondition(), startState);

		secondDotQtoOState.addTransition(new TextValueCondition("d", true),
				rightAbbreviateQODState);
		secondDotQtoOState.addTransition(new AnyCondition(), startState);

		secondDotQtoWState.addTransition(new TextValueCondition("k", true),
				rightAbbreviateQWKState);
		secondDotQtoWState.addTransition(new AnyCondition(), startState);

		secondDotQtoAState.addTransition(new TextValueCondition("m", true),
				rightAbbreviateQAMState);
		secondDotQtoAState.addTransition(new AnyCondition(), startState);

		secondDotQtoPState.addTransition(new TextValueCondition("m", true),
				rightAbbreviateQPMState);
		secondDotQtoPState.addTransition(new AnyCondition(), startState);

		secondDotBtoIState.addTransition(new TextValueCondition("d", true),
				endState);
		secondDotBtoIState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQADState.addTransition(thirdDotConditionQAD, endState);
		rightAbbreviateQADState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQDSState.addTransition(thirdDotConditionQDS, endState);
		rightAbbreviateQDSState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQHSState.addTransition(thirdDotConditionQHS, endState);
		rightAbbreviateQHSState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQIDState.addTransition(thirdDotConditionQID, endState);
		rightAbbreviateQIDState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQMTState.addTransition(thirdDotConditionQMT, endState);
		rightAbbreviateQMTState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQODState.addTransition(thirdDotConditionQOD, endState);
		rightAbbreviateQODState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQWKState.addTransition(thirdDotConditionQWK, endState);
		rightAbbreviateQWKState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQAMState.addTransition(thirdDotConditionQAM, endState);
		rightAbbreviateQAMState.addTransition(new AnyCondition(), startState);

		rightAbbreviateQPMState.addTransition(thirdDotConditionQPM, endState);
		rightAbbreviateQPMState.addTransition(new AnyCondition(), startState);

		leftAbbreviateBState.addTransition(firstDotConditionB, firstDotBState);
		leftAbbreviateBState.addTransition(new AnyCondition(), startState);

		firstDotBState.addTransition(new TextValueCondition("i", true),
				middleAbbreviateBtoIState);
		firstDotBState.addTransition(new AnyCondition(), startState);

		middleAbbreviateBtoIState.addTransition(secondDotConditionBI,
				secondDotBtoIState);
		middleAbbreviateBtoIState.addTransition(new AnyCondition(), startState);

		secondDotBtoIState.addTransition(new TextValueCondition("d", true),
				rightAbbreviateBIDState);
		secondDotBtoIState.addTransition(new AnyCondition(), startState);

		rightAbbreviateBIDState.addTransition(thirdDotConditionBID, endState);

		leftAbbreviatePState.addTransition(firstDotConditionP, firstDotPState);
		leftAbbreviatePState.addTransition(new AnyCondition(), startState);

		leftAbbreviateTState.addTransition(firstDotConditionT, firstDotTState);
		leftAbbreviateTState.addTransition(new AnyCondition(), startState);

		firstDotPState.addTransition(new TextValueCondition("r", true),
				middleAbbreviatePtoRState);
		firstDotPState.addTransition(new AnyCondition(), startState);

		firstDotTState.addTransition(new TextValueCondition("i", true),
				middleAbbreviateTtoIState);
		firstDotTState.addTransition(new AnyCondition(), startState);

		middleAbbreviatePtoRState.addTransition(secondDotConditionPR,
				secondDotPtoRState);
		middleAbbreviatePtoRState.addTransition(new AnyCondition(), startState);

		middleAbbreviateTtoIState.addTransition(secondDotConditionTI,
				secondDotTtoIState);
		middleAbbreviateTtoIState.addTransition(new AnyCondition(), startState);

		secondDotPtoRState.addTransition(new TextValueCondition("n", true),
				rightAbbreviatePRNState);
		secondDotPtoRState.addTransition(new AnyCondition(), startState);

		secondDotTtoIState.addTransition(new TextValueCondition("d", true),
				rightAbbreviateTIDState);
		secondDotTtoIState.addTransition(new AnyCondition(), startState);

		rightAbbreviatePRNState.addTransition(thirdDotConditionPRN, endState);
		rightAbbreviateTIDState.addTransition(thirdDotConditionTID, endState);

		endState.addTransition(new AnyCondition(), startState);
		return m;
	}