One solution is to build a mapping table of the exceptions mapped to the final name. You have to maintain this by hand, but you only have to include the exceptions, or potential exceptions. For example:
CompanyMap: MAPPING LOAD * INLINE [ from, to I.B.M, IBM Intl Bus Mach, IBM Msoft, Microsoft MS, Microsoft ] ;
MAP Company USING CompanyMap;
Companies: LOAD Company INLINE [ Company IBM I.B.M Microsoft Msoft MS ms Energy Specialists ] ;
Another option is to use MapSubstring to look for partial names, but that doesn't cover all situations well. e.g T.Craig.