Undecidable means, there is no T.M that always say YES(if string belongs to language) or NO(if string doesn't), for every input string.
Decidable means for every i/p string we can decide whether it belongs to language or not.
Now, Semi-decidable means, if the string belongs to language then it will say YES but if string doesn't belong then it will not necessarily say NO, as T.M might run forever..
so Semi-decidable is a subset of Undecidable. But any times, people call it undecidable only bcoz, we can not decide it always.