The concept of abstract services has been widely adopted in service computing to specify the functionality of certain types of Web services. It significantly benefits key service management tasks, such as service discovery and composition, as these tasks can be first applied to a small number of abstract services and then mapped to the large scale actual services. However, how to generate abstract services is non-trivial. Current approaches either assume the existence of abstract services or adopt a manual process that demands intensive human intervention. We propose a novel approach to fully automate the generation of abstract services from a service community that consists of a set of functionally similar services. A set of candidate outputs are first discovered based on predefined support ratio, which determines the minimum number of services that produce the outputs. Then, the matching inputs are identified to form the abstract services. We propose a set of heuristics to effectively prune a large number of candidate abstract services. An comprehensive experimental study on real world web service data is conducted to demonstrate the effectiveness and efficiency of the proposed approach.