Fine-grained semantic type discovery for heterogeneous sources using clustering