private Set<PartOfSpeechTag> analyzeWordForPossibleTags(String word){
        Map<PartOfSpeechTag, Integer> tagCount = new HashMap<PartOfSpeechTag, Integer>();
        Set<PartOfSpeechTag> mostLikelyTags = new HashSet<PartOfSpeechTag>();
        if(isNumeric(word)){
            mostLikelyTags.add(PartOfSpeechTag.CD);
        }
        else if(word.length() > 1){
            //Consider last two letters
            String ending = word.substring(word.length()-2);
            for(String taggedWord : tagTable.getAllWords()){
                if(taggedWord.endsWith(ending)){
                    for(PartOfSpeechTag tag : tagTable.getWordTags(taggedWord)){
                        if(!tagCount.containsKey(tag)) //if a word has same ending it may be correct tag
                            tagCount.put(tag,1);
                        else tagCount.put(tag,tagCount.get(tag)+1);
                    }
                }
            }

            int numTags = tagCount.size();
            //pick the top 4 tags based on frequency
            for(int i = 0; i < Math.min(numTags,4); i++){
                PartOfSpeechTag max = getMaxTag(tagCount);
                mostLikelyTags.add(max);
                tagCount.remove(max);
            }
        }
        return mostLikelyTags;
    }