Semantic clustering for identifying overlapping biological communities