public double smoothRecursion(String suffix, String tag)
	{
		double theta = 0.2;	// Assume a value for now

		// Recursive case: MLE of suffix + theta * recursion over smaller suffix
		if(!suffix.equals(""))
		{
			// A: Initial MLE of P(tag | suffix)

			// double MLE = getPriorProbability(tag);	// Placeholder value
			double MLE = 0.0;
			int numerator = 0;
			int denominator = 0;

			// 1: For each key in outputCounts, see if it ends with required suffix
			for(String corpusWord : outputCounts.keySet())
			{
				// 2: If yes, add all its counts to denominator
				if(corpusWord.endsWith(suffix))
				{
					// Add counts to denominator here
					for(String tagKey : outputCounts.get(corpusWord).keySet())
						denominator += outputCounts.get(corpusWord).get(tagKey);

					// 3: Now add count of MATCHING TAG ONLY to numerator
					if(outputCounts.get(corpusWord).containsKey(tag))
						numerator += outputCounts.get(corpusWord).get(tag);
				}
			}
			// 5: Compute MLE = numerator/denominator
			if(denominator != 0)
				MLE = numerator / (double) denominator;
			else
				MLE = 0;

			// B: Make the recursive call
			double recursiveResult = smoothRecursion(suffix.substring(1), tag);

			return (MLE + theta * recursiveResult) / (1 + theta);
		}

		// Base case: Only MLE
		else
		{
			// C: MLE for P(tag) without suffix

			double MLE = getPriorProbability(tag);
			return MLE;
		}
	}