Current natural language generation or machine translation systems cannot distinguish among near-synonyms - words that share the same core meaning but vary in their lexical nuances. This is due to a lack of knowledge about differences between near-synonyms in existing computational lexical resources. In this work, I automatically acquired a lexical knowledge-base of near-synonym differences from multiple sources, using an unsupervised decision- list algorithm. The main types of differences are: stylistic (for example, "inebriated" is more formal than "drunk"), attitudinal (for example, "skinny" is more pejorative than "slim"), and denotational (for example, "blunder" implies "accident" and "ignorance", while "error" does not). To show how the knowledge-base can be used in practice, I designed Xenon, a natural language generation system system that chooses the near-synonym that best matches a set of input preferences. I implemented Xenon by adding a near-synonym choice module and a near-synonym collocation module to an existing general-purpose surface realizer.