public Map<String, Integer> getWords(String sentence) {
		if (sentence == null)
			return null;

		sbuf = sentence.toCharArray();
		Map<String, Integer> mp = new HashMap<String, Integer>();

		int convStart = -1, convEnd = -1;
		for (int i = 0; i <= sbuf.length; i++) {
			if (!isAlpha(i - 1) && isAlpha(i)) {
				// find ...@A...
				convStart = i;
			} else if (!isAlpha(i) && isAlpha(i - 1)) {
				// find ...A@...
				convEnd = i - 1;
				String wd = String.valueOf(sbuf, convStart, convEnd - convStart
						+ 1);
				int count = 1;
				if (mp.containsKey(wd)) {
					count = mp.get(wd) + 1;
				}
				mp.put(wd, count);
			}
		}

		// NOTE: make sure all words are handled, especially the first word
		// and the last word. Check isAlpha to see how it is handled.
		return mp;
	}