class EnglishTokenizer implements Serializable, TextTokenizer {

	public List<String> tokenize(String text) {
		List<String> words = new ArrayList<String>();
		if (text != null && !text.isEmpty()) {
			TokenStream tokenStream = this.createTokenStream(text);
			CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);

			try {
				while (tokenStream.incrementToken()) {
					String term = charTermAttribute.toString();
					words.add(term);
				}
			} catch (IOException ioe) {
				LOGGER.error("Unable to analyze text. Cause : " + ioe.getMessage(), ioe);
			} finally {
				try {
					tokenStream.end();
					tokenStream.close();
				} catch (IOException e) {
					// Can't do nothing!!
					LOGGER.error("Unable to close token stream : " + e.getMessage());
				}
			}
		}

		return words;
	}

	public  EnglishTokenizer();
	public  EnglishTokenizer(int minNGram, int maxNGram);
	public  EnglishTokenizer(List<String> stopWords);
	public  EnglishTokenizer(List<String> stopWords, Set<String> stemExclusionsSet);

}