optimize speed: unordered_map to replace map; resolve stupid stemmer